diff options
| author | 2018-08-28 14:36:16 +0100 | |
|---|---|---|
| committer | 2018-08-28 14:36:16 +0100 | |
| commit | ef16817ad56d04107725afef66b66289f347d246 (patch) | |
| tree | 366dac33569993c5db962ade01e32a47d337f0f0 /IRCServer.py | |
| parent | Made "you need to be authenticated" message more helpful (diff) | |
| signature | ||
Switch to time.monotonic for comparisons, only send data at most once every .5
seconds and only send max 512 bytes at a time
Diffstat (limited to 'IRCServer.py')
| -rw-r--r-- | IRCServer.py | 14 |
1 files changed, 11 insertions, 3 deletions
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)) |
