Source code for vmware.vapi.protocol.server.msg.handler_factory
"""
Protocol handler factory
"""
__author__ = 'VMware, Inc.'
__copyright__ = 'Copyright 2011-2012 VMware, Inc. All rights reserved. -- VMware Confidential'
import logging
from vmware.vapi.lib.load import dynamic_import
logger = logging.getLogger(__name__)
[docs]class ProtocolHandlerFactory(object):
""" Protocol handler factory """
def __init__(self):
""" Protocol handler factory init """
self.handlers = {
# protocol name : constructor / constructor name
'json': 'vmware.vapi.protocol.server.msg.json_handler.get_protocol_handler',
}
[docs] def get_handler(self, protocol_name, *args, **kwargs):
"""
Create protocol handler
:type protocol: :class:`str`
:param protocol: protocol name
:type args: :class:`tuple`
:param args: position parameters to protocol handler constructor
:type kwargs: :class:`dict`
:param kwargs: key parameters to protocol handler constructor
:rtype: :class:`vmware.vapi.protocol.server.api_handler.ApiHandler`
:return: Api handler object
"""
constructor = self.handlers.get(protocol_name)
if constructor is not None:
constructor = dynamic_import(constructor)
if constructor:
return constructor(*args, **kwargs)