Esempio n. 1
0
class ClientConnectionHandler(Thread):
    def __init__(self, host, port, name, comm_service):
        super(ClientConnectionHandler, self).__init__()
        self._host = host
        self._port = port
        self._name = name
        self._communication_service = comm_service
        self._logger = logging.getLogger(self.__class__.__name__)
        self._socket_wrapper = None
        self._send_handler = None
        self._receive_handler = None
        self._master_node_name = None
        self._running = True

    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)

    def send(self, target_name, target_service, message):
        self._send_handler.send(target_name, target_service, message)

    def handshake(self, socket_wrapper):
        socket_wrapper.write(self._name)
        self._master_node_name = socket_wrapper.read()
        client = Client(self._master_node_name, socket_wrapper)
        self._logger.info('Handshake complete with the master node [%s]',
                          self._master_node_name)
        return client

    def stop(self):
        self._running = False
        self._logger.info("Client Connection Handler [%s] stop requested.",
                          self._name)
class ClientConnectionHandler(Thread):
    def __init__(self, host, port, name, comm_service):
        super(ClientConnectionHandler, self).__init__()
        self._host = host
        self._port = port
        self._name = name
        self._communication_service = comm_service
        self._logger = logging.getLogger(self.__class__.__name__)
        self._socket_wrapper = None
        self._send_handler = None
        self._receive_handler = None
        self._master_node_name = None
        self._running = True

    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)

    def send(self, target_name, target_service, message):
        self._send_handler.send(target_name, target_service, message)

    def handshake(self, socket_wrapper):
        socket_wrapper.write(self._name)
        self._master_node_name = socket_wrapper.read()
        client = Client(self._master_node_name, socket_wrapper)
        self._logger.info('Handshake complete with the master node [%s]', self._master_node_name)
        return client

    def stop(self):
        self._running = False
        self._logger.info("Client Connection Handler [%s] stop requested.", self._name)
    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
class ClientConnectionHandler(Service):

    def construct(self, config={}):
        self._host = config.get('host', 'localhost')
        self._port = config.get('port', 4545)
        self._socket_wrapper = None
        self._send_handler = None
        self._receive_handler = None
        self._node_name = config.get('node_name', 'Worker')
        self._master_node_name = None
        self._timeout = 1

    def init(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.get_parent().add_client(client)
        self._logger.info('Connection to master node successful.')
        self._receive_handler = ReceiveHandler(parent=self, socket_wrapper=self._socket_wrapper, client=client)
        self._receive_handler.start()
        self._send_handler = SendHandler(parent=self, client=client)
        self._send_handler.start()

    def deinit(self):
        self._socket_wrapper.close()

    def do_work(self):
        time.sleep(self._timeout)
        raise TimeoutError

    def send(self, target_name, target_service, message):
        self._send_handler.send(target_name, target_service, message)

    def handshake(self, socket_wrapper):
        socket_wrapper.write(self._node_name)
        self._master_node_name = socket_wrapper.read()
        client = Client(self._master_node_name, socket_wrapper)
        self._logger.info('Handshake complete with the master node [%s]', self._master_node_name)
        return client
 def init(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.get_parent().add_client(client)
     self._logger.info('Connection to master node successful.')
     self._receive_handler = ReceiveHandler(parent=self, socket_wrapper=self._socket_wrapper, client=client)
     self._receive_handler.start()
     self._send_handler = SendHandler(parent=self, client=client)
     self._send_handler.start()
Esempio n. 6
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)
    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)
    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)