From 853cc0d3fa42e58041a3650e6e066e9892884420 Mon Sep 17 00:00:00 2001 From: artem30801 <38689676+artem30801@users.noreply.github.com> Date: Thu, 26 Dec 2019 18:23:10 +0300 Subject: [PATCH] File sending fix (#61) * Changed sending buffering * Connected config to buffer size in clients * Update data logging for file transmit * Fix logging when receive data Co-authored-by: Arthur Golubtsov --- Drone/client_config.ini | 3 ++- Server/server.py | 3 ++- Server/server_config.ini | 2 +- messaging_lib.py | 14 ++++++++------ 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/Drone/client_config.ini b/Drone/client_config.ini index 1da8803..1710d60 100644 --- a/Drone/client_config.ini +++ b/Drone/client_config.ini @@ -2,7 +2,7 @@ port = 25000 broadcast_port = 8181 host = 192.168.1.101 -buffer_size = 1024 +buffer_size = 10000 [VISUAL_POSE_WATCHDOG] timeout = 1.0 @@ -64,3 +64,4 @@ animation_file = animation.csv use_ntp = False host = ntp1.stratum2.ru port = 123 + diff --git a/Server/server.py b/Server/server.py index b3b958e..6b9af0f 100644 --- a/Server/server.py +++ b/Server/server.py @@ -180,6 +180,7 @@ class Server(messaging.Singleton): if not any([client_addr == addr[0] for client_addr in Client.clients.keys()]): client = Client(addr[0]) + client.buffer_size = self.BUFFER_SIZE logging.info("New client") else: client = Client.clients[addr[0]] @@ -336,7 +337,7 @@ class Client(messaging.ConnectionManager): @requires_connect def _send(self, data): super(Client, self)._send(data) - logging.debug("Queued data to send: {}".format(data)) + logging.debug("Queued data to send (first 256 bytes): {}".format(data[:256])) def send_config_options(self, *options: ConfigOption, reload_config=True): logging.info("Sending config options: {} to {}".format(options, self.addr)) diff --git a/Server/server_config.ini b/Server/server_config.ini index 1f6da13..653133d 100644 --- a/Server/server_config.ini +++ b/Server/server_config.ini @@ -1,6 +1,6 @@ [SERVER] port = 25000 -buffer_size = 1024 +buffer_size = 10000 remove_disconnected = False [CHECKS] diff --git a/messaging_lib.py b/messaging_lib.py index 855e1ef..4591842 100644 --- a/messaging_lib.py +++ b/messaging_lib.py @@ -207,7 +207,7 @@ class ConnectionManager(object): messages_callbacks = {} requests_callbacks = {} - def __init__(self, whoami = "computer"): + def __init__(self, whoami="computer"): self.selector = None self.socket = None self.addr = None @@ -227,7 +227,7 @@ class ConnectionManager(object): self._request_lock = threading.Lock() self._close_lock = threading.Lock() - self.BUFFER_SIZE = 1024 + self.buffer_size = 1024 self.resume_queue = False self.resend_requests = True @@ -333,14 +333,14 @@ class ConnectionManager(object): def _read(self): try: - data = self.socket.recv(self.BUFFER_SIZE) + data = self.socket.recv(self.buffer_size) except io.BlockingIOError: # Resource temporarily unavailable (errno EWOULDBLOCK) pass else: if data: self._recv_buffer += data - logger.debug("Received {} from {}".format(data, self.addr)) + logger.debug("Received {} bytes from {}".format(len(data), self.addr)) else: logger.warning("Connection to {} lost!".format(self.addr)) @@ -426,7 +426,7 @@ class ConnectionManager(object): def _write(self): try: - sent = self.socket.send(self._send_buffer) + sent = self.socket.send(self._send_buffer[:self.buffer_size]) except io.BlockingIOError: # Resource temporarily unavailable (errno EWOULDBLOCK) pass @@ -436,8 +436,10 @@ class ConnectionManager(object): raise error else: - logger.debug("Sent {} to {}".format(self._send_buffer[:sent], self.addr)) self._send_buffer = self._send_buffer[sent:] + left = len(self._send_buffer) + logger.debug("Sent message to {}: sent {} bytes, {} bytes left.".format(self.addr, sent, left))#, self._send_buffer[:sent],)) + def _send(self, data): with self._send_lock: