Improve lag handling.
This commit is contained in:
parent
e39fa57f83
commit
5c2c5a655c
3 changed files with 24 additions and 3 deletions
1
main.py
1
main.py
|
@ -296,6 +296,7 @@ def receive_cb(server_name, file_descriptor):
|
||||||
message.response = HttpResponse(status, headers, body)
|
message.response = HttpResponse(status, headers, body)
|
||||||
receive_time = time.time()
|
receive_time = time.time()
|
||||||
server.lag = (receive_time - message.send_time) * 1000
|
server.lag = (receive_time - message.send_time) * 1000
|
||||||
|
server.lag_done = True
|
||||||
W.bar_item_update("lag")
|
W.bar_item_update("lag")
|
||||||
message.receive_time = receive_time
|
message.receive_time = receive_time
|
||||||
|
|
||||||
|
|
|
@ -74,9 +74,15 @@ def matrix_bar_item_lag(data, item, window, buffer, extra_info):
|
||||||
if (buffer in server.buffers.values() or
|
if (buffer in server.buffers.values() or
|
||||||
buffer == server.server_buffer):
|
buffer == server.server_buffer):
|
||||||
if server.lag >= 500:
|
if server.lag >= 500:
|
||||||
lag = "{0:.3f}" if server.lag < 1000 else "{0:.0f}"
|
color = W.color("irc.color.item_lag_counting")
|
||||||
lag_string = "Lag: {lag}".format(
|
if server.lag_done:
|
||||||
lag=lag.format(server.lag / 1000)
|
color = W.color("irc.color.item_lag_finished")
|
||||||
|
|
||||||
|
lag = "{0:.3f}" if round(server.lag) < 1000 else "{0:.0f}"
|
||||||
|
lag_string = "Lag: {color}{lag}{ncolor}".format(
|
||||||
|
lag=lag.format((server.lag / 1000)),
|
||||||
|
color=color,
|
||||||
|
ncolor=W.color("reset")
|
||||||
)
|
)
|
||||||
return lag_string
|
return lag_string
|
||||||
return ""
|
return ""
|
||||||
|
|
|
@ -72,6 +72,7 @@ class MatrixServer:
|
||||||
self.next_batch = None # type: str
|
self.next_batch = None # type: str
|
||||||
self.transaction_id = 0 # type: int
|
self.transaction_id = 0 # type: int
|
||||||
self.lag = 0 # type: int
|
self.lag = 0 # type: int
|
||||||
|
self.lag_done = False # type: bool
|
||||||
|
|
||||||
self.send_fd_hook = None # type: weechat.hook
|
self.send_fd_hook = None # type: weechat.hook
|
||||||
self.send_buffer = b"" # type: bytes
|
self.send_buffer = b"" # type: bytes
|
||||||
|
@ -461,6 +462,19 @@ def matrix_timer_cb(server_name, remaining_calls):
|
||||||
if not server.connected:
|
if not server.connected:
|
||||||
return W.WEECHAT_RC_OK
|
return W.WEECHAT_RC_OK
|
||||||
|
|
||||||
|
# check lag, disconnect if it's too big
|
||||||
|
if server.receive_queue:
|
||||||
|
message = server.receive_queue.popleft()
|
||||||
|
server.lag = (current_time - message.send_time) * 1000
|
||||||
|
server.receive_queue.appendleft(message)
|
||||||
|
server.lag_done = False
|
||||||
|
W.bar_item_update("lag")
|
||||||
|
|
||||||
|
# TODO print out message, make timeout configurable
|
||||||
|
if server.lag > 300000:
|
||||||
|
server.disconnect()
|
||||||
|
server.schedule_reconnect()
|
||||||
|
|
||||||
while server.send_queue:
|
while server.send_queue:
|
||||||
message = server.send_queue.popleft()
|
message = server.send_queue.popleft()
|
||||||
prnt_debug(DebugType.MESSAGING, server,
|
prnt_debug(DebugType.MESSAGING, server,
|
||||||
|
|
Loading…
Add table
Reference in a new issue