def init_comms(self, callback=None):
     """
     Initialize client comms with the logger process and start a
     listener thread.
     """
     try:
         self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
         # This can be thrown here.
         # error: [Errno 61] Connection refused
         self.sock.connect((self.host, self.port))
         self.sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
         self.sock.setblocking(0)
         self.listener_thread = Listener(self.sock, self.delim, callback)
         self.listener_thread.start()
         mi_logger.info(
             'LoggerClient.init_comms(): connected to port agent at %s:%i.'
             % (self.host, self.port))
     except:
         raise InstrumentConnectionException(
             'Failed to connect to port agent at %s:%i.' %
             (self.host, self.port))
    def init_comms(self,
                   user_callback_data=None,
                   user_callback_raw=None,
                   listener_callback_error=None,
                   user_callback_error=None,
                   heartbeat=0,
                   max_missed_heartbeats=None,
                   start_listener=True):

        self.user_callback_data = user_callback_data
        self.user_callback_raw = user_callback_raw
        self.listener_callback_error = listener_callback_error
        self.user_callback_error = user_callback_error
        self.heartbeat = heartbeat
        self.max_missed_heartbeats = max_missed_heartbeats
        self.start_listener = start_listener

        if False == self._init_comms():
            error_string = ' port_agent_client private _init_comms failed.'
            log.error(error_string)
            raise InstrumentConnectionException(error_string)