blob: ae638bed44f7803f659a9cad6224916b9da10d76 [file] [log] [blame]
from __future__ import absolute_import, division, print_function, unicode_literals
_RPC_BACKEND_REGISTRY = {}
def _get_rpc_backend_registry():
return _RPC_BACKEND_REGISTRY
def is_rpc_backend_registered(backend_name):
return backend_name in _get_rpc_backend_registry()
def register_rpc_backend(backend_name, init_rpc_backend_handler):
"""Registers a new rpc backend.
Arguments:
backend (str): backend string to identify the handler.
handler (function): Handler that is invoked when the
`_init_rpc()` function is called with a backend.
This returns the agent.
"""
rpc_backend_registry = _get_rpc_backend_registry()
if backend_name in rpc_backend_registry:
raise RuntimeError("Rpc backend {}: already registered".format(backend_name))
rpc_backend_registry[backend_name] = init_rpc_backend_handler
def init_rpc_backend(backend_name, *args, **kwargs):
rpc_backend_registry = _get_rpc_backend_registry()
if backend_name not in rpc_backend_registry:
raise RuntimeError("No rpc_init handler for {}.".format(backend_name))
return rpc_backend_registry[backend_name](*args, **kwargs)