def setup_channel_set(channel_set): """Configures an amfast.remoting.channel.ChannelSet object.""" # Setup database schema = persistent.Schema() schema.createSchema() schema.createMappers() # Setup DB based connection_manager and subscription_manager channel_set.connection_manager = SaConnectionManager( persistent.engine, persistent.metadata) channel_set.connection_manager.createTables() channel_set.subscription_manager = SaSubscriptionManager( persistent.engine, persistent.metadata) channel_set.subscription_manager.createTables() # Send log messages to STDOUT handler = logging.StreamHandler(sys.stdout) handler.setLevel(logging.DEBUG) amfast.logger.addHandler(handler) # Map class aliases # These same aliases must be # registered in the client # with the registClassAlias function, # or the RemoteClass metadata tag. class_mapper = ClassDefMapper() class_mapper.mapClass(SaClassDef(models.User, 'models.User')) class_mapper.mapClass(SaClassDef(models.Email, 'models.Email')) class_mapper.mapClass(SaClassDef(models.PhoneNumber, 'models.PhoneNumber')) # Expose class_mapper to our controller sa_obj = controller.SAObject() sa_obj.class_def_mapper = class_mapper # Set Channel options # We're going to use the same # Encoder and Decoder for all channels encoder = Encoder(use_collections=True, use_proxies=True, class_def_mapper=class_mapper, use_legacy_xml=True) decoder = Decoder(class_def_mapper=class_mapper) for channel in channel_set: channel.endpoint.encoder = encoder channel.endpoint.decoder = decoder # Map service targets to controller methods service = Service('ExampleService') service.mapTarget(SaCallableTarget(sa_obj.load, 'load')) service.mapTarget(SaCallableTarget(sa_obj.loadAttr, 'loadAttr')) service.mapTarget(SaCallableTarget(sa_obj.loadAll, 'loadAll')) service.mapTarget(SaCallableTarget(sa_obj.saveList, 'saveList')) service.mapTarget(SaCallableTarget(sa_obj.save, 'save')) service.mapTarget(SaCallableTarget(sa_obj.remove, 'remove')) service.mapTarget(SaCallableTarget(sa_obj.removeList, 'removeList')) service.mapTarget( SaCallableTarget(sa_obj.insertDefaultData, 'insertDefaultData')) channel_set.service_mapper.mapService(service)
def createserver(config, jobqueue, db): channel_set = TornadoChannelSet() polling_channel = TornadoChannel('amf') channel_set.mapChannel(polling_channel) class_mapper = ClassDefMapper() encoder = Encoder(amf3=True, use_collections=True, use_proxies=True, use_references=True, class_def_mapper=class_mapper) decoder = Decoder(amf3=True, class_def_mapper=class_mapper) for channel in channel_set: channel.endpoint.encoder = encoder channel.endpoint.decoder = decoder srcpath = os.path.join(os.environ["CUREGAME_ROOT"], "../flex/lib/") if not os.path.exists(srcpath): srcpath = None for klass in EXPOSE_SERVICES: as3rpc.bind_amfast_service(klass, channel_set, class_mapper, args=(config, jobqueue, db), srcpath=srcpath) bin_path = os.path.join(os.environ["CUREGAME_ROOT"], "../flex/Dashboard/bin") static_path = os.path.join(os.environ["CUREGAME_ROOT"], "media") template_path = os.path.join(os.environ["CUREGAME_ROOT"], "media/html") return tornado.web.Application([ (r"/dashboard/amf/", polling_channel.request_handler), (r"/(.*)", tornado.web.StaticFileHandler, {"path": bin_path}), ], static_path=static_path, template_path=template_path)
def __init__(self, encoder=None, decoder=None): if encoder is None: from amfast.encoder import Encoder encoder = Encoder() self.encoder = encoder if decoder is None: from amfast.decoder import Decoder decoder = Decoder() self.decoder = decoder
def setup_channel_set(channel_set): """Configures an amfast.remoting.channel.ChannelSet object.""" # Send log messages to STDOUT handler = logging.StreamHandler(sys.stdout) handler.setLevel(logging.DEBUG) amfast.logger.addHandler(handler) # These classes are for interacting with the Red5 echo test client. class_mapper = ClassDefMapper() class_mapper.mapClass( DynamicClassDef(RemoteClass, 'org.red5.server.webapp.echo.RemoteClass', amf3=False)) class_mapper.mapClass( ExternClassDef(ExternClass, 'org.red5.server.webapp.echo.ExternalizableClass')) # Set Channel options # We're going to use the same # Encoder and Decoder for all channels encoder = Encoder(use_collections=True, use_proxies=True, class_def_mapper=class_mapper, use_legacy_xml=True) decoder = Decoder(class_def_mapper=class_mapper) for channel in channel_set: channel.endpoint.encoder = encoder channel.endpoint.decoder = decoder # Map service targets to controller methods channel_set.service_mapper.default_service.mapTarget( CallableTarget(echo, 'echo')) service = Service('Red5Echo') service.mapTarget(CallableTarget(echo, 'echo')) channel_set.service_mapper.mapService(service)
import struct import json import sys import os import shutil from amfast.decoder import Decoder from action import Download, GetSlides, Prepare, Slice, Render, Concat from file import File decoder = Decoder(amf3=True) class Recording(object): def __init__(self, index='index.json'): self.path, _ = os.path.split(index) with open(index, 'r') as f: index = json.loads(f.read()) self.duration = index['duration'] self.chunks = index['chunks'] self.streams = index['streams'] self.snapshot = index['snapshots'][0]['name'] self.actions = [] self.files = [] self.events = [] self.counter = 0 self.docs = {} tmp = os.path.join(self.path, 'tmp') if not os.path.exists(tmp): os.makedirs(tmp)
def createserver(config, rootdir, db): channel_set = TornadoChannelSet() polling_channel = TornadoChannel('amf') channel_set.mapChannel(polling_channel) class_mapper = ClassDefMapper() encoder = Encoder(amf3=True, use_collections=True, use_proxies=True, use_references=True, class_def_mapper=class_mapper) decoder = Decoder(amf3=True, class_def_mapper=class_mapper) for channel in channel_set: channel.endpoint.encoder = encoder channel.endpoint.decoder = decoder srcpath = os.path.join(rootdir, "../flex/lib/") if not os.path.exists(srcpath): srcpath = None for klass in EXPOSE_SERVICES: as3rpc.bind_amfast_service(klass, channel_set, class_mapper, args=(config, db), srcpath=srcpath) swf_path = os.path.join(rootdir, "media/swf") static_path = os.path.join(rootdir, "media") template_path = os.path.join(rootdir, "media/html") pcms_md5 = hashlib.md5( open(os.path.join(swf_path, "pcms.swf"), "rb").read()).hexdigest() return tornado.web.Application( [ (r"/remotepy/rpc/", remotepy.RemotePyHandler), (r"/pcms/amf/", polling_channel.request_handler), (r"/pcms/excel/", GeneratePatientExcelHandler, { "db": db }), (r"/admin/login/", AdminLoginHandler), (r"/admin/logout/", AdminLogoutHandler), (r"/admin/list/", AdminListStationsHandler, { "db": db }), (r"/admin/reset/sync/", AdminResetClientSyncHandler, { "db": db }), (r"/admin/status/", AdminStatusCheckHandler, { "db": db }), (r"/", FlashAppHandler, { "config": config, "title": _("VRS Analytics"), "flash_id": "pcms", "flash_version": "10.1.0", "flash_movie": "pcms.swf", "movie_md5": pcms_md5 }), (r"/(.*)", tornado.web.StaticFileHandler, { "path": swf_path }), ], login_url="/admin/login/", cookie_secret="529397d22d7bd16a1f4616726f3312fe4d4b48c1", static_path=static_path, template_path=template_path)
def setUp(self): self.class_mapper = class_def.ClassDefMapper() self.decoder = Decoder()
def testDecodeAmf3(self): return self._testDecoder(Decoder(amf3=True), Encoder(amf3=True), 'sample_2.log')
def testDecodeAmf0(self): return self._testDecoder(Decoder(), Encoder(), 'sample.log')