From ef16817ad56d04107725afef66b66289f347d246 Mon Sep 17 00:00:00 2001 From: jesopo Date: Tue, 28 Aug 2018 14:36:16 +0100 Subject: Switch to time.monotonic for comparisons, only send data at most once every .5 seconds and only send max 512 bytes at a time --- IRCServer.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'IRCServer.py') diff --git a/IRCServer.py b/IRCServer.py index ee280010..5575e680 100644 --- a/IRCServer.py +++ b/IRCServer.py @@ -30,6 +30,7 @@ class Server(object): self.channel_modes = [] self.channel_types = [] self.last_read = None + self.last_send = None self.attempted_join = {} self.ping_sent = False self.name = None @@ -205,7 +206,7 @@ class Server(object): decoded_lines.append(line) if not decoded_lines: self.disconnect() - self.last_read = time.time() + self.last_read = time.monotonic() self.ping_sent = False return decoded_lines def send(self, data): @@ -217,9 +218,16 @@ class Server(object): print(encoded.decode("utf8")) def _send(self): self.write_buffer = self.write_buffer[self.socket.send( - self.write_buffer):] + self.write_buffer[:512]):] + self.last_send = time.monotonic() def waiting_send(self): - return bool(len(self.write_buffer)) + return bool(len(self.write_buffer)) and self.send_timeout() == 0 + def send_timeout(self): + if self.last_send == None: + return 0 + timeout = (self.last_send)+0.5 + timeout = timeout-time.monotonic() + return max(timeout, 0) def send_user(self, username, realname): self.send("USER %s - - :%s" % (username, realname)) -- cgit v1.3.1-10-gc9f91