server: Use a timeout for syncs.

This commit is contained in:
Damir Jelić 2018-08-03 12:25:17 +02:00
parent 2e28e03e0c
commit 3b01483cc4

View file

@ -416,9 +416,10 @@ class MatrixServer:
def schedule_sync(self): def schedule_sync(self):
self.sync_time = time.time() self.sync_time = time.time()
def sync(self): def sync(self, timeout=None):
# type: Optional[int] -> None
self.sync_time = None self.sync_time = None
_, request = self.client.sync() _, request = self.client.sync(timeout)
self.send_or_queue(request) self.send_or_queue(request)
def login(self): def login(self):
@ -536,6 +537,13 @@ class MatrixServer:
def handle_response(self, response): def handle_response(self, response):
# type: (MatrixMessage) -> None # type: (MatrixMessage) -> None
self.lag = response.elapsed * 1000 self.lag = response.elapsed * 1000
# If the response was a sync response and contained a timeout the
# timeout is expected and should be removed from the lag.
# TODO the timeout isn't a constant
if isinstance(response, SyncRepsponse):
self.lag = max(0, self.lag - (30000))
self.lag_done = True self.lag_done = True
W.bar_item_update("lag") W.bar_item_update("lag")
@ -649,7 +657,7 @@ def matrix_timer_cb(server_name, remaining_calls):
return W.WEECHAT_RC_OK return W.WEECHAT_RC_OK
if server.sync_time and current_time > (server.sync_time + 2): if server.sync_time and current_time > (server.sync_time + 2):
server.sync() server.sync(30000)
while server.send_queue: while server.send_queue:
message = server.send_queue.popleft() message = server.send_queue.popleft()