def handler(f): try: f.result() return registration_id except: self.deregister_listener(registration_id) raise HazelcastError("Listener cannot be added")
def shutdown(self): if not self._is_live: return self._is_live = False if self._thread is not threading.current_thread(): self._thread.join() for connection in list(self._map.values()): try: connection.close(None, HazelcastError("Client is shutting down")) except OSError as connection: if connection.args[0] == socket.EBADF: pass else: raise self._map.clear()
def shutdown(self): if not self._is_live: return self._is_live = False if self._ident != get_ident(): self._thread.join() for connection in list(self._map.values()): if connection is self.waker: continue try: connection.close_connection( None, HazelcastError("Client is shutting down")) except OSError as connection: if connection.args[0] == socket.EBADF: pass else: raise self.waker.close() self._map.clear()
def register_listener(self, registration_request, decode_register_response, encode_deregister_request, handler): with self._registration_lock: registration_id = str(uuid4()) registration = _ListenerRegistration(registration_request, decode_register_response, encode_deregister_request, handler) self._active_registrations[registration_id] = registration futures = [] for connection in six.itervalues( self._connection_manager.active_connections): future = self._register_on_connection_async( registration_id, registration, connection) futures.append(future) try: combine_futures(*futures).result() except: self.deregister_listener(registration_id) raise HazelcastError("Listener cannot be added") return registration_id