def reconnect(self, socket_type, service_name, service_port=None, service_type=None): self.context = None self.socket = None self.stream = None self.heartbeat_received = None if not service_type: service_type = socket_type_to_service(socket_type) rr = bonjour_utilities.resolve(service_type, service_name) if not rr: # TODO raise error or wait ?? return self.context = zmq.Context() self.socket = self.context.socket(socket_type) self.stream = ZMQStream(self.socket) connection_str = "tcp://%s:%s" % (rr[1], rr[2]) self.socket.connect(connection_str) # re-register the subscriptions for topic in self.topic_callbacks.keys(): self._subscribe_topic(topic) # And set the callback self.stream.on_recv(self._topic_callback_wrapper)
def reconnect(self, socket_type, service_name, service_port=None, service_type=None): self.context = None self.socket = None self.stream = None self.heartbeat_received = None if not service_type: service_type = socket_type_to_service(socket_type) if isinstance(service_name, (list, tuple)): rr = [None, service_name[0], service_name[1]] else: rr = bonjour_utilities.resolve(service_type, service_name) #print ("DEBUG: bonjour_utilities.resolve(%s, %s) returned %s" % (service_type,service_name,rr)) if not rr: # TODO raise error or wait ?? return self.context = zmq.Context() self.socket = self.context.socket(socket_type) self.socket.setsockopt(zmq.IDENTITY, self.identity) self.stream = ZMQStream(self.socket) connection_str = "tcp://%s:%s" % (rr[1], rr[2]) #print("DEBUG: reconnect connection_str=%s (service_type=%s)" % (connection_str, service_type)) self.socket.connect(connection_str) # re-register the subscriptions if socket_type == zmq.SUB: for topic in self.topic_callbacks.keys(): self._subscribe_topic(topic) # And set the callback self.stream.on_recv(self._topic_callback_wrapper)