Source code for cis_interface.drivers.ServerResponseDriver

import uuid
from cis_interface.drivers.ConnectionDriver import ConnectionDriver


[docs]class ServerResponseDriver(ConnectionDriver): r"""Class for handling server side RPC type communication. Args: response_address (str): The address of the channel used to send responses to the client response driver. comm (str, optional): The comm class that should be used to communicate with the server resposne driver. Defaults to tools.get_default_comm(). msg_id (str, optional): ID associate with the request message this driver was created to respond to. Defaults to new unique ID. **kwargs: Additional keyword arguments are passed to parent class. Attributes: comm (str): The comm class that should be used to communicate with the server driver. Defaults to tools.get_default_comm(). msg_id (str): ID associate with the request message this driver was created to respond to. """ def __init__(self, response_address, comm=None, msg_id=None, request_name=None, **kwargs): if msg_id is None: msg_id = str(uuid.uuid4()) response_name = 'ServerResponse.%s' % msg_id if request_name is not None: response_name = request_name + '.' + response_name # Input communicator from client model icomm_kws = kwargs.get('icomm_kws', {}) icomm_kws['comm'] = None icomm_kws['name'] = 'server_model_response.' + msg_id icomm_kws['is_response_server'] = True kwargs['icomm_kws'] = icomm_kws # Output communicator to client response driver ocomm_kws = kwargs.get('ocomm_kws', {}) ocomm_kws['comm'] = comm ocomm_kws['name'] = response_name if response_address is not None: ocomm_kws['address'] = response_address kwargs['ocomm_kws'] = ocomm_kws # Overall keywords kwargs['single_use'] = True super(ServerResponseDriver, self).__init__(response_name, **kwargs) self.comm = comm self.msg_id = msg_id @property def model_response_name(self): r"""str: The name of the channel used by the server model to send responses.""" return self.icomm.name @property def model_response_address(self): r"""str: The address of the channel used by the server model to send responses.""" return self.icomm.address @property def response_address(self): r"""str: The address of the channel used to send responses to the client response driver.""" return self.ocomm.address