コード例 #1
0
ファイル: utils.py プロジェクト: ajurna/amfast
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)
コード例 #2
0
ファイル: service.py プロジェクト: BlenderCN-Org/curictus
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)
コード例 #3
0
ファイル: utils.py プロジェクト: ajurna/amfast
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)
コード例 #4
0
ファイル: utils.py プロジェクト: rwarren/amfast
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)
コード例 #5
0
ファイル: utils.py プロジェクト: phaethon/amfast
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
コード例 #6
0
ファイル: utils.py プロジェクト: rwarren/amfast
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
コード例 #7
0
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)
コード例 #8
0
ファイル: utils.py プロジェクト: ajurna/amfast
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)
コード例 #9
0
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)
コード例 #10
0
'''
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))
コード例 #11
0
ファイル: application.py プロジェクト: UfSoft/dac
    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
コード例 #12
0
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)