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)
def bind_amfast_service(klass, channel_set, class_mapper, args=[], srcpath=None): codegen.register_service(klass, srcpath) instance = klass(*args) service = Service(klass.__name__) for method_name in klass.__amf_methods__: service.mapTarget(CallableTarget(getattr(instance, method_name), method_name)) channel_set.service_mapper.mapService(service) for as3import in klass.__amf_imports__: pytype = find_pytype(as3import) assert pytype is not None register_type(pytype, class_mapper, srcpath=srcpath)
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) # Map service targets to controller methods cont_obj = controller.Controller() service = Service('ExampleService') service.mapTarget(CallableTarget(cont_obj.echo, 'echo')) service.mapTarget(CallableTarget(cont_obj.raiseException, 'raiseException')) channel_set.service_mapper.mapService(service)
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)
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) # Map service targets to controller methods cont_obj = controller.Controller() service = Service("ExampleService") # Set secure=True to raise an exception # when an un-authenticated user attempts # to access the target. service.mapTarget(CallableTarget(cont_obj.echo, "echo", secure=True)) channel_set.service_mapper.mapService(service) # Set the ChannelSet's 'checkCredentials' attribute # to enable authentication. # # In this example, we're using a method from the # controller to check credentials. channel_set.checkCredentials = cont_obj.checkCredentials
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) # Map service targets to controller methods cont_obj = controller.Controller() service = Service('ExampleService') # Set secure=True to raise an exception # when an un-authenticated user attempts # to access the target. service.mapTarget(CallableTarget(cont_obj.echo, 'echo', secure=True)) channel_set.service_mapper.mapService(service) # Set the ChannelSet's 'checkCredentials' attribute # to enable authentication. # # In this example, we're using a method from the # controller to check credentials. channel_set.checkCredentials = cont_obj.checkCredentials
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 setup_channel_set(channel_set): """Configures an amfast.remoting.channel.ChannelSet object.""" #amfast.logger = log.logger # Map service targets to controller methods cont_obj = app.controller.Controller() service = Service('DAService') service.mapTarget(CallableTarget(cont_obj.get_player_info, 'get_player_info')) service.mapTarget(CallableTarget(cont_obj.do_move, 'do_move')) service.mapTarget(CallableTarget(cont_obj.do_attack, 'do_attack')) service.mapTarget(CallableTarget(cont_obj.get_news, 'get_news')) service.mapTarget(CallableTarget(cont_obj.get_floor, 'get_floor')) service.mapTarget(CallableTarget(cont_obj.get_monster, 'get_monster')) service.mapTarget(CallableTarget(cont_obj.raiseException, 'raiseException')) channel_set.service_mapper.mapService(service)
''' Created on 2009-10-12 Melee 项目的网页访问站点 @author: hanbing ''' from amfast.remoting import Service, CallableTarget, ExtCallableTarget from amfast.remoting.channel import SecurityError from amfast.remoting.twisted_channel import TwistedChannelSet, TwistedChannel from twisted.web import static, vhost from twisted.web.server import Site import amfast import logging import sys service = Service('MeleeService') def checkCredentials(user, password): if user != 'correct': raise SecurityError(u'用户名错.') if password != 'correct': raise SecurityError(u'密码错.') return True def ServiceFunction(fn): service.mapTarget(ExtCallableTarget(fn, fn.__name__, secure=True))
def build_root(self): from amfast.encoder import Encoder from amfast.decoder import Decoder from amfast.class_def.code_generator import CodeGenerator from amfast.class_def import ClassDefMapper, DynamicClassDef # If the code is completely asynchronous, # you can use the dummy_threading module # to avoid RLock overhead. # import dummy_threading # amfast.mutex_cls = dummy_threading.RLock share_path = join(dirname(__file__), 'shared') root = vhost.NameVirtualHost() root.default = static.File(share_path) root.addHost("localhost", static.File(share_path)) root.putChild("upload", controllers.UploadResource()) root.putChild("downloads", static.File(self.config.downloads_dir)) # Setup ChannelSet channel_set = TwistedChannelSet(notify_connections=True) # Streaming amf_streaming = StreamingTwistedChannel('amf-streaming') channel_set.mapChannel(amf_streaming) # Regular polling amf_polling = TwistedChannel('amf-polling') channel_set.mapChannel(amf_polling) # Long polling amf_long_polling = TwistedChannel('amf-long-polling', wait_interval=90000) channel_set.mapChannel(amf_long_polling) # 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(DynamicClassDef( Conversion, 'org.ufsoft.baca.conversions.Conversion' )) class_mapper.mapClass(DynamicClassDef( Translation, 'org.ufsoft.baca.i18n.Translation' )) class_mapper.mapClass(DynamicClassDef( Language, 'org.ufsoft.baca.i18n.Language' )) # 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 cont_obj = controllers.Controller() rpc_channel = TwistedChannel('rpc') channel_set.mapChannel(rpc_channel) rpc_service = Service('WebServices') rpc_service.mapTarget(CallableTarget(cont_obj.get_process_queue, 'get_process_queue')) rpc_service.mapTarget(ExtCallableTarget(cont_obj.get_languages, 'get_languages')) rpc_service.mapTarget(ExtCallableTarget(cont_obj.get_translations, 'get_translations')) channel_set.service_mapper.mapService(rpc_service) # Setup channels root.putChild('amf-streaming', amf_streaming) root.putChild('amf-polling', amf_polling) root.putChild('amf-long-polling', amf_long_polling) root.putChild('rpc', rpc_channel) self.server = server.Site(root) self.channel_set = channel_set # Generate source code for mapped models # coder = CodeGenerator(indent=' ') # coder.generateFilesFromMapper(class_mapper, use_accessors=False, # packaged=True, constructor=False, # bindable=True, extends='Object', # dir=join(self.config.dir, '..', 'flex')) return self.server
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)