diff options
| author | Rapptz <[email protected]> | 2018-09-24 23:22:49 -0400 |
|---|---|---|
| committer | Rapptz <[email protected]> | 2018-09-24 23:22:49 -0400 |
| commit | 27216892547bb073777056379d549a6dc42872cb (patch) | |
| tree | 18d1eded01727f64c93e31d23cb68201de16c832 /discord/gateway.py | |
| parent | Optimise some member and user related routines. (diff) | |
| download | discord.py-27216892547bb073777056379d549a6dc42872cb.tar.xz discord.py-27216892547bb073777056379d549a6dc42872cb.zip | |
Optimise tight loops in DiscordGateway.received_message
* type(x) is y is faster than isinstance(x, y)
* Re-arrange if-statements for common statements
* Drop handler getattr for most events that don't use it
Diffstat (limited to 'discord/gateway.py')
| -rw-r--r-- | discord/gateway.py | 68 |
1 files changed, 34 insertions, 34 deletions
diff --git a/discord/gateway.py b/discord/gateway.py index 66b04186..23b5de77 100644 --- a/discord/gateway.py +++ b/discord/gateway.py @@ -312,7 +312,7 @@ class DiscordWebSocket(websockets.client.WebSocketClientProtocol): async def received_message(self, msg): self._dispatch('socket_raw_receive', msg) - if isinstance(msg, bytes): + if type(msg) is bytes: self._buffer.extend(msg) if len(msg) >= 4: @@ -336,44 +336,44 @@ class DiscordWebSocket(websockets.client.WebSocketClientProtocol): if seq is not None: self.sequence = seq - if op == self.RECONNECT: - # "reconnect" can only be handled by the Client - # so we terminate our connection and raise an - # internal exception signalling to reconnect. - log.info('Received RECONNECT opcode.') - await self.close() - raise ResumeWebSocket(self.shard_id) + if op != self.DISPATCH: + if op == self.RECONNECT: + # "reconnect" can only be handled by the Client + # so we terminate our connection and raise an + # internal exception signalling to reconnect. + log.info('Received RECONNECT opcode.') + await self.close() + raise ResumeWebSocket(self.shard_id) - if op == self.HEARTBEAT_ACK: - self._keep_alive.ack() - return + if op == self.HEARTBEAT_ACK: + self._keep_alive.ack() + return - if op == self.HEARTBEAT: - beat = self._keep_alive.get_payload() - await self.send_as_json(beat) - return + if op == self.HEARTBEAT: + beat = self._keep_alive.get_payload() + await self.send_as_json(beat) + return - if op == self.HELLO: - interval = data['heartbeat_interval'] / 1000.0 - self._keep_alive = KeepAliveHandler(ws=self, interval=interval, shard_id=self.shard_id) - # send a heartbeat immediately - await self.send_as_json(self._keep_alive.get_payload()) - self._keep_alive.start() - return + if op == self.HELLO: + interval = data['heartbeat_interval'] / 1000.0 + self._keep_alive = KeepAliveHandler(ws=self, interval=interval, shard_id=self.shard_id) + # send a heartbeat immediately + await self.send_as_json(self._keep_alive.get_payload()) + self._keep_alive.start() + return - if op == self.INVALIDATE_SESSION: - if data == True: - await asyncio.sleep(5.0, loop=self.loop) - await self.close() - raise ResumeWebSocket(self.shard_id) + if op == self.INVALIDATE_SESSION: + if data == True: + await asyncio.sleep(5.0, loop=self.loop) + await self.close() + raise ResumeWebSocket(self.shard_id) - self.sequence = None - self.session_id = None - log.info('Shard ID %s session has been invalidated.' % self.shard_id) - await self.identify() - return + self.sequence = None + self.session_id = None + log.info('Shard ID %s session has been invalidated.' % self.shard_id) + await self.identify() + return - if op != self.DISPATCH: log.warning('Unknown OP code %s.', op) return @@ -386,7 +386,7 @@ class DiscordWebSocket(websockets.client.WebSocketClientProtocol): log.info('Shard ID %s has connected to Gateway: %s (Session ID: %s).', self.shard_id, ', '.join(trace), self.session_id) - if event == 'RESUMED': + elif event == 'RESUMED': self._trace = trace = data.get('_trace', []) log.info('Shard ID %s has successfully RESUMED session %s under trace %s.', self.shard_id, self.session_id, ', '.join(trace)) |