Skip to content

Commit 60d19d5

Browse files
committed
feat: re-add gateway.latency prop
1 parent 2b9e3fd commit 60d19d5

File tree

3 files changed

+16
-19
lines changed

3 files changed

+16
-19
lines changed

interactions/api/gateway/gateway.py

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -132,14 +132,6 @@ async def __aexit__(
132132
finally:
133133
self.ws = None
134134

135-
@property
136-
def average_latency(self) -> float:
137-
"""Get the average latency of the connection."""
138-
if self.latency:
139-
return sum(self.latency) / len(self.latency)
140-
else:
141-
return float("inf")
142-
143135
async def run(self) -> None:
144136
"""Start receiving events from the websocket."""
145137
while True:
@@ -184,14 +176,14 @@ async def dispatch_opcode(self, data, op: OPCODE) -> None:
184176
return await self.send_heartbeat()
185177

186178
case OPCODE.HEARTBEAT_ACK:
187-
self.latency.append(time.perf_counter() - self._last_heartbeat)
179+
self._latency.append(time.perf_counter() - self._last_heartbeat)
188180

189-
if self._last_heartbeat != 0 and self.latency[-1] >= 15:
181+
if self._last_heartbeat != 0 and self._latency[-1] >= 15:
190182
self.logger.warning(
191-
f"High Latency! shard ID {self.shard[0]} heartbeat took {self.latency[-1]:.1f}s to be acknowledged!"
183+
f"High Latency! shard ID {self.shard[0]} heartbeat took {self._latency[-1]:.1f}s to be acknowledged!"
192184
)
193185
else:
194-
self.logger.debug(f"❤ Heartbeat acknowledged after {self.latency[-1]:.5f} seconds")
186+
self.logger.debug(f"❤ Heartbeat acknowledged after {self._latency[-1]:.5f} seconds")
195187

196188
return self._acknowledged.set()
197189

interactions/api/gateway/websocket.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ def __init__(self, state: "ConnectionState") -> None:
4747
self.rl_manager = WebsocketRateLimit()
4848

4949
self.heartbeat_interval = None
50-
self.latency = collections.deque(maxlen=10)
50+
self._latency = collections.deque(maxlen=10)
5151

5252
# This lock needs to be held to send something over the gateway, but is also held when
5353
# reconnecting. That way there's no race conditions between sending and reconnecting.
@@ -116,11 +116,16 @@ async def __aexit__(
116116
@property
117117
def average_latency(self) -> float:
118118
"""Get the average latency of the connection."""
119-
if self.latency:
120-
return sum(self.latency) / len(self.latency)
119+
if self._latency:
120+
return sum(self._latency) / len(self._latency)
121121
else:
122122
return float("inf")
123123

124+
@property
125+
def latency(self) -> float:
126+
"""Get the latency of the connection."""
127+
return self._latency[-1]
128+
124129
@property
125130
def loop(self) -> asyncio.AbstractEventLoop:
126131
return asyncio.get_running_loop()

interactions/api/voice/voice_gateway.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -165,14 +165,14 @@ async def receive(self, force=False) -> str:
165165
async def dispatch_opcode(self, data, op) -> None:
166166
match op:
167167
case OP.HEARTBEAT_ACK:
168-
self.latency.append(time.perf_counter() - self._last_heartbeat)
168+
self._latency.append(time.perf_counter() - self._last_heartbeat)
169169

170-
if self._last_heartbeat != 0 and self.latency[-1] >= 15:
170+
if self._last_heartbeat != 0 and self._latency[-1] >= 15:
171171
self.logger.warning(
172-
f"High Latency! Voice heartbeat took {self.latency[-1]:.1f}s to be acknowledged!"
172+
f"High Latency! Voice heartbeat took {self._latency[-1]:.1f}s to be acknowledged!"
173173
)
174174
else:
175-
self.logger.debug(f"❤ Heartbeat acknowledged after {self.latency[-1]:.5f} seconds")
175+
self.logger.debug(f"❤ Heartbeat acknowledged after {self._latency[-1]:.5f} seconds")
176176

177177
return self._acknowledged.set()
178178

0 commit comments

Comments
 (0)