def do_work(self):
        try:
            (client_socket, address) = self._socket.accept()
        except socket.timeout:
            raise TimeoutError

        self._logger.info('New client request received from [%s:%d]',
                          address[0], address[1])
        client_socket_wrapper = SocketReadWrite(client_socket)
        client = self.handshake(client_socket_wrapper)
        self._clients.append(client)
        self.get_parent().add_client(client)

        receive_handler = ReceiveHandler(parent=self,
                                         socket_wrapper=client_socket_wrapper,
                                         client=client)
        receive_handler.start()
        self._handlers.append(receive_handler)

        send_handler = SendHandler(parent=self, client=client)
        send_handler.startup()
        self._handlers.append(send_handler)

        client.set_handlers(receive_handler, send_handler)
        return True
Exemplo n.º 2
0
    def run(self):
        self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.socket.settimeout(5)
        self.socket.bind((self._host, self._port))
        self.socket.listen(5)

        while self._running:
            try:
                (client_socket, address) = self.socket.accept()
            except socket.timeout:
                continue
            self._logger.info('New client request received from [%s:%d]',
                              address[0], address[1])
            client_socket_wrapper = SocketReadWrite(client_socket)
            client = self.handshake(client_socket_wrapper)
            self._clients.append(client)
            self._communication_service.add_client(client)

            receive_handler = ReceiveHandler(self._communication_service,
                                             client_socket_wrapper, client)
            receive_handler.start()
            self._handlers.append(receive_handler)

            send_handler = SendHandler(self._communication_service, client)
            send_handler.start()
            self._handlers.append(send_handler)

            client.set_handlers(receive_handler, send_handler)

        for handler in self._handlers:
            handler.stop()
            handler.join()
        for client in self._clients:
            client.close()

        self._logger.info("Server Connection Handler [%s] run complete.",
                          self._name)
Exemplo n.º 3
0
    def run(self):
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self._socket_wrapper = SocketReadWrite(s)
        self._logger.info('Connecting to master node.')
        s.connect((self._host, self._port))
        client = self.handshake(self._socket_wrapper)
        self._communication_service.add_client(client)
        self._logger.info('Connection to master node successful.')
        self._receive_handler = ReceiveHandler(self._communication_service,
                                               self._socket_wrapper, client)
        self._receive_handler.start()
        self._send_handler = SendHandler(self._communication_service, client)
        self._send_handler.start()

        while self._running:
            time.sleep(5)

        self._send_handler.stop()
        self._send_handler.join()
        self._receive_handler.stop()
        self._receive_handler.join()
        self._socket_wrapper.close()
        self._logger.info("Client Connection Handler [%s] run complete.",
                          self._name)