def append(self, packet: GamePacket) -> None: """Append batch request. :param packet: game packet """ _logger.debug('< %s', LogString(packet)) self._packets.append((RELIABILITY_DICT[packet.type], packet))
def push(self, payload: bytes, reliability: Reliability, send_time_in_future=0) -> None: for frame in self._create_frame(payload, reliability): _logger.debug('< %s', LogString(frame)) self._queue.put(self._get_current_time() + send_time_in_future, frame)
def perform(self, action: Action) -> None: action = self._world_extension.filter_action(action) if action is None: _logger.info('%s was filtered.', action) return _logger.debug('>> %s', LogString(action)) asyncio.get_event_loop().call_soon( getattr(self, '_process_' + action.type.name.lower()), action)
def datagram_received(self, data: bytes, addr: Address) -> None: _logger.debug('%s > %s', addr, data.hex()) packet = raknet_packet_codec.decode(data) _logger.debug('> %s', LogString(packet)) try: getattr(self, '_process_' + packet.type.name.lower())(packet, addr) except SessionNotFound as exc: assert exc.addr == addr, '{} != {}'.format(exc.addr, addr) _logger.info('%s session is not found.', addr) self.remove_session(addr)
def send_connection_packet(self, packet: ConnectionPacket, addr: Address, reliability: Reliability) -> None: """Send connection packet to specified address. :param packet: connection packet :param addr: destination :param reliability: frame reliability """ _logger.debug('< %s', LogString(packet)) self._get_protocol(addr).game_data_received( connection_packet_codec.encode(packet), addr, reliability)
def _process_batch(self, packet: ConnectionPacket, addr: Address) -> None: for i, data in enumerate(packet.payloads): try: packet = game_packet_codec.decode(data) _logger.debug('> %s', LogString(packet)) getattr(self, '_process_' + packet.type.name.lower())(packet, addr) except SessionNotFound: raise except Exception as exc: _logger.exception('%s', exc) self.send_waiting_game_packet(addr)
def _process_frames(self, frames: List[RakNetFrame]) -> None: for frame in frames: _logger.debug('> %s', LogString(frame)) getattr(self, '_process_' + frame.type.name.lower())(frame)
def send_to_remote(self, packet: RakNetPacket, addr: Address) -> None: _logger.debug('< %s', LogString(packet)) data = raknet_packet_codec.encode(packet) _logger.debug('%s < %s', addr, data.hex()) self.__transport.sendto(data, addr)
def data_received(self, data: bytes, addr: Address) -> None: packet = connection_packet_codec.decode(data) _logger.debug('> %s', LogString(packet)) getattr(self, '_process_' + packet.type.name.lower())(packet, addr)
async def next_event(self) -> Optional[Event]: event = await self._event_queue.get() _logger.debug('<< %s', LogString(event)) return event