Allow specifying a serializer when creating a server

Since the dispatcher class isn't public, we need to allow this to be passed via
the server constructor.
This commit is contained in:
Mark McLoughlin 2013-06-07 11:05:22 +01:00
parent 65d985053c
commit 7cf7b386c8
3 changed files with 8 additions and 5 deletions

View File

@ -19,9 +19,10 @@ from openstack.common.messaging.rpc import server
class EventletRPCServer(server._RPCServer):
def __init__(self, transport, target, endpoints):
def __init__(self, transport, target, endpoints, serializer=None):
executor_cls = impl_eventlet.EventletExecutor
super(EventletRPCServer, self).__init__(transport,
target,
endpoints,
serializer,
executor_cls)

View File

@ -51,7 +51,7 @@ class UnsupportedVersion(RPCDispatcherError):
class RPCDispatcher(object):
"Pass messages to the API objects for processing."
def __init__(self, endpoints, serializer=None):
def __init__(self, endpoints, serializer):
self.endpoints = endpoints
self.serializer = serializer or msg_serializer.NoOpSerializer()
self._default_target = target.Target()

View File

@ -20,18 +20,20 @@ from openstack.common.messaging.rpc import _dispatcher
class _RPCServer(_server.MessageHandlingServer):
def __init__(self, transport, target, endpoints, executor_cls):
def __init__(self, transport, target, endpoints, serializer, executor_cls):
dispatcher = _dispatcher.RPCDispatcher(endpoints, serializer)
super(_RPCServer, self).__init__(transport,
target,
_dispatcher.RPCDispatcher(endpoints),
dispatcher,
executor_cls)
class BlockingRPCServer(_RPCServer):
def __init__(self, transport, target, endpoints):
def __init__(self, transport, target, endpoints, serializer=None):
executor_cls = impl_blocking.BlockingExecutor
super(BlockingRPCServer, self).__init__(transport,
target,
endpoints,
serializer,
executor_cls)