Ejemplo n.º 1
0
 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()
Ejemplo n.º 3
0
    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