Main packet handler class. More...
#include <HandlerPacket.hpp>
Collaboration diagram for rnp::HandlerPacket:Public Member Functions | |
| HandlerPacket ()=default | |
| Constructor. | |
| ~HandlerPacket ()=default | |
| Destructor. | |
| HandlerPacket (const HandlerPacket &)=delete | |
| HandlerPacket & | operator= (const HandlerPacket &)=delete |
| void | setRateLimitInterval (std::chrono::milliseconds interval) |
| Set rate limiting interval. | |
| void | onConnect (ConnectHandler handler) |
| Register CONNECT packet handler. | |
| void | onConnectAccept (ConnectAcceptHandler handler) |
| Register CONNECT_ACCEPT packet handler. | |
| void | onDisconnect (DisconnectHandler handler) |
| Register DISCONNECT packet handler. | |
| void | onWorldState (WorldStateHandler handler) |
| Register WORLD_STATE packet handler. | |
| void | onPing (PingHandler handler) |
| Register PING packet handler. | |
| void | onPong (PongHandler handler) |
| Register PONG packet handler. | |
| void | onError (ErrorHandler handler) |
| Register ERROR packet handler. | |
| void | onEntityEvent (EntityEventHandler handler) |
| Register ENTITY_EVENT packet handler. | |
| void | onLobbyListRequest (LobbyListRequestHandler handler) |
| Register LOBBY_LIST_REQUEST packet handler. | |
| void | onLobbyListResponse (LobbyListResponseHandler handler) |
| Register LOBBY_LIST_RESPONSE packet handler. | |
| void | onLobbyCreate (LobbyCreateHandler handler) |
| Register LOBBY_CREATE packet handler. | |
| void | onLobbyCreateResponse (LobbyCreateResponseHandler handler) |
| Register LOBBY_CREATE_RESPONSE packet handler. | |
| void | onLobbyJoin (LobbyJoinHandler handler) |
| Register LOBBY_JOIN packet handler. | |
| void | onLobbyJoinResponse (LobbyJoinResponseHandler handler) |
| Register LOBBY_JOIN_RESPONSE packet handler. | |
| void | onLobbyLeave (LobbyLeaveHandler handler) |
| Register LOBBY_LEAVE packet handler. | |
| void | onLobbyUpdate (LobbyUpdateHandler handler) |
| Register LOBBY_UPDATE packet handler. | |
| void | onGameStart (GameStartHandler handler) |
| Register GAME_START packet handler. | |
| void | onStartGameRequest (StartGameRequestHandler handler) |
| Register START_GAME_REQUEST packet handler. | |
| HandlerResult | processPacket (const std::vector< std::uint8_t > &data, const PacketContext &context) |
| Process a received packet. | |
| const HandlerStats & | getStats () const |
| Get handler statistics. | |
| void | resetStats () |
| Reset statistics. | |
| void | clearSession (std::uint32_t sessionId) |
| Clear rate limiting data for a session. | |
| void | clearAllSessions () |
| Clear all rate limiting data. | |
Private Member Functions | |
| bool | isRateLimited (std::uint32_t sessionId, const std::chrono::steady_clock::time_point ¤tTime) |
| Check rate limiting for a session. | |
| void | updateStats (PacketType packetType, HandlerResult result, std::size_t bytesReceived) |
| Update statistics. | |
| std::vector< EventRecord > | parseEntityEvents (Serializer &serializer, std::size_t payloadSize) |
| Parse and handle ENTITY_EVENT packet. | |
Main packet handler class.
Definition at line 92 of file HandlerPacket.hpp.
|
default |
Constructor.
|
default |
Destructor.
|
delete |
|
inline |
Clear all rate limiting data.
Definition at line 561 of file HandlerPacket.hpp.
References lastPacketTime_.
|
inline |
Clear rate limiting data for a session.
| sessionId | Session to clear |
Definition at line 556 of file HandlerPacket.hpp.
References lastPacketTime_.
Referenced by srv::AsioServer::disconnectClient().
Here is the caller graph for this function:
|
inline |
Get handler statistics.
Definition at line 545 of file HandlerPacket.hpp.
References stats_.
|
inlineprivate |
Check rate limiting for a session.
| sessionId | Session to check |
| currentTime | Current time |
Definition at line 131 of file HandlerPacket.hpp.
References lastPacketTime_, and rateLimitInterval_.
Referenced by processPacket().
Here is the caller graph for this function:
|
inline |
Register CONNECT packet handler.
| handler | Callback function for CONNECT packets |
Definition at line 231 of file HandlerPacket.hpp.
References connectHandler_.
Referenced by srv::AsioServer::setupPacketHandlers().
Here is the caller graph for this function:
|
inline |
Register CONNECT_ACCEPT packet handler.
| handler | Callback function for CONNECT_ACCEPT packets |
Definition at line 237 of file HandlerPacket.hpp.
References connectAcceptHandler_.
Referenced by eng::AsioClient::setupPacketHandlers().
Here is the caller graph for this function:
|
inline |
Register DISCONNECT packet handler.
| handler | Callback function for DISCONNECT packets |
Definition at line 243 of file HandlerPacket.hpp.
References disconnectHandler_.
Referenced by eng::AsioClient::setupPacketHandlers(), and srv::AsioServer::setupPacketHandlers().
Here is the caller graph for this function:
|
inline |
Register ENTITY_EVENT packet handler.
| handler | Callback function for ENTITY_EVENT packets |
Definition at line 273 of file HandlerPacket.hpp.
References entityEventHandler_.
Referenced by eng::AsioClient::setupPacketHandlers(), and srv::AsioServer::setupPacketHandlers().
Here is the caller graph for this function:
|
inline |
Register ERROR packet handler.
| handler | Callback function for ERROR packets |
Definition at line 267 of file HandlerPacket.hpp.
References errorHandler_.
Referenced by eng::AsioClient::setupPacketHandlers().
Here is the caller graph for this function:
|
inline |
Register GAME_START packet handler.
| handler | Callback function for GAME_START packets |
Definition at line 336 of file HandlerPacket.hpp.
References gameStartHandler_.
Referenced by eng::AsioClient::setupPacketHandlers().
Here is the caller graph for this function:
|
inline |
Register LOBBY_CREATE packet handler.
| handler | Callback function for LOBBY_CREATE packets |
Definition at line 294 of file HandlerPacket.hpp.
References lobbyCreateHandler_.
Referenced by srv::AsioServer::setupPacketHandlers().
Here is the caller graph for this function:
|
inline |
Register LOBBY_CREATE_RESPONSE packet handler.
| handler | Callback function for LOBBY_CREATE_RESPONSE packets |
Definition at line 300 of file HandlerPacket.hpp.
References lobbyCreateResponseHandler_.
Referenced by eng::AsioClient::setupPacketHandlers().
Here is the caller graph for this function:
|
inline |
Register LOBBY_JOIN packet handler.
| handler | Callback function for LOBBY_JOIN packets |
Definition at line 309 of file HandlerPacket.hpp.
References lobbyJoinHandler_.
Referenced by srv::AsioServer::setupPacketHandlers().
Here is the caller graph for this function:
|
inline |
Register LOBBY_JOIN_RESPONSE packet handler.
| handler | Callback function for LOBBY_JOIN_RESPONSE packets |
Definition at line 315 of file HandlerPacket.hpp.
References lobbyJoinResponseHandler_.
Referenced by eng::AsioClient::setupPacketHandlers().
Here is the caller graph for this function:
|
inline |
Register LOBBY_LEAVE packet handler.
| handler | Callback function for LOBBY_LEAVE packets |
Definition at line 324 of file HandlerPacket.hpp.
References lobbyLeaveHandler_.
Referenced by srv::AsioServer::setupPacketHandlers().
Here is the caller graph for this function:
|
inline |
Register LOBBY_LIST_REQUEST packet handler.
| handler | Callback function for LOBBY_LIST_REQUEST packets |
Definition at line 279 of file HandlerPacket.hpp.
References lobbyListRequestHandler_.
Referenced by srv::AsioServer::setupPacketHandlers().
Here is the caller graph for this function:
|
inline |
Register LOBBY_LIST_RESPONSE packet handler.
| handler | Callback function for LOBBY_LIST_RESPONSE packets |
Definition at line 285 of file HandlerPacket.hpp.
References lobbyListResponseHandler_.
Referenced by eng::AsioClient::setupPacketHandlers().
Here is the caller graph for this function:
|
inline |
Register LOBBY_UPDATE packet handler.
| handler | Callback function for LOBBY_UPDATE packets |
Definition at line 330 of file HandlerPacket.hpp.
References lobbyUpdateHandler_.
Referenced by eng::AsioClient::setupPacketHandlers().
Here is the caller graph for this function:
|
inline |
Register PING packet handler.
| handler | Callback function for PING packets |
Definition at line 255 of file HandlerPacket.hpp.
References pingHandler_.
Referenced by eng::AsioClient::setupPacketHandlers(), and srv::AsioServer::setupPacketHandlers().
Here is the caller graph for this function:
|
inline |
Register PONG packet handler.
| handler | Callback function for PONG packets |
Definition at line 261 of file HandlerPacket.hpp.
References pongHandler_.
Referenced by eng::AsioClient::setupPacketHandlers(), and srv::AsioServer::setupPacketHandlers().
Here is the caller graph for this function:
|
inline |
Register START_GAME_REQUEST packet handler.
| handler | Callback function for START_GAME_REQUEST packets |
Definition at line 342 of file HandlerPacket.hpp.
References startGameRequestHandler_.
Referenced by srv::AsioServer::setupPacketHandlers().
Here is the caller graph for this function:
|
inline |
Register WORLD_STATE packet handler.
| handler | Callback function for WORLD_STATE packets |
Definition at line 249 of file HandlerPacket.hpp.
References worldStateHandler_.
Referenced by eng::AsioClient::setupPacketHandlers().
Here is the caller graph for this function:
|
delete |
|
inlineprivate |
Parse and handle ENTITY_EVENT packet.
| serializer | Serializer containing the packet data |
| payloadSize | Size of the payload |
Definition at line 179 of file HandlerPacket.hpp.
References rnp::EventRecord::data, rnp::Serializer::readByte(), rnp::Serializer::readBytes(), rnp::Serializer::readUInt16(), rnp::Serializer::readUInt32(), and rnp::EventRecord::type.
Referenced by processPacket().
Here is the call graph for this function:
Here is the caller graph for this function:
|
inline |
Process a received packet.
| data | Raw packet data |
| context | Packet context information |
Definition at line 350 of file HandlerPacket.hpp.
References rnp::CONNECT, rnp::CONNECT_ACCEPT, connectAcceptHandler_, connectHandler_, rnp::Serializer::deserializeConnect(), rnp::Serializer::deserializeConnectAccept(), rnp::Serializer::deserializeDisconnect(), rnp::Serializer::deserializeError(), rnp::Serializer::deserializeGameStart(), rnp::Serializer::deserializeHeader(), rnp::Serializer::deserializeLobbyCreate(), rnp::Serializer::deserializeLobbyCreateResponse(), rnp::Serializer::deserializeLobbyJoin(), rnp::Serializer::deserializeLobbyJoinResponse(), rnp::Serializer::deserializeLobbyListResponse(), rnp::Serializer::deserializeLobbyUpdate(), rnp::Serializer::deserializePingPong(), rnp::Serializer::deserializeStartGameRequest(), rnp::Serializer::deserializeWorldState(), rnp::DISCONNECT, disconnectHandler_, rnp::ENTITY_EVENT, entityEventHandler_, errorHandler_, rnp::GAME_START, gameStartHandler_, rnp::INVALID_PACKET, isRateLimited(), rnp::PacketHeader::length, rnp::LOBBY_CREATE, rnp::LOBBY_CREATE_RESPONSE, rnp::LOBBY_JOIN, rnp::LOBBY_JOIN_RESPONSE, rnp::LOBBY_LEAVE, rnp::LOBBY_LIST_REQUEST, rnp::LOBBY_LIST_RESPONSE, rnp::LOBBY_UPDATE, lobbyCreateHandler_, lobbyCreateResponseHandler_, lobbyJoinHandler_, lobbyJoinResponseHandler_, lobbyLeaveHandler_, lobbyListRequestHandler_, lobbyListResponseHandler_, lobbyUpdateHandler_, rnp::MAX_PAYLOAD, rnp::PACKET_ERROR, parseEntityEvents(), rnp::PING, pingHandler_, rnp::PONG, pongHandler_, rnp::PROCESSING_ERROR, rnp::RATE_LIMITED, rnp::PacketContext::receiveTime, rnp::PacketContext::sessionId, rnp::PacketHeader::sessionId, rnp::START_GAME_REQUEST, startGameRequestHandler_, rnp::PacketHeader::type, rnp::UNSUPPORTED_TYPE, updateStats(), rnp::WORLD_STATE, and worldStateHandler_.
Referenced by eng::AsioClient::handleReceive(), and srv::AsioServer::handleReceive().
Here is the call graph for this function:
Here is the caller graph for this function:
|
inline |
|
inline |
Set rate limiting interval.
| interval | Minimum time between packets per session |
Definition at line 225 of file HandlerPacket.hpp.
References rateLimitInterval_.
|
inlineprivate |
Update statistics.
| packetType | Type of packet processed |
| result | Processing result |
| bytesReceived | Number of bytes in the packet |
Definition at line 156 of file HandlerPacket.hpp.
References rnp::HandlerStats::packetTypeCount, rnp::HandlerStats::resultCount, stats_, rnp::SUCCESS, rnp::HandlerStats::totalBytesReceived, rnp::HandlerStats::totalPacketsDropped, rnp::HandlerStats::totalPacketsProcessed, and rnp::HandlerStats::totalPacketsReceived.
Referenced by processPacket().
Here is the caller graph for this function:
|
private |
Definition at line 104 of file HandlerPacket.hpp.
|
private |
Definition at line 97 of file HandlerPacket.hpp.
Referenced by onConnectAccept(), and processPacket().
|
private |
Definition at line 96 of file HandlerPacket.hpp.
Referenced by onConnect(), and processPacket().
|
private |
Definition at line 98 of file HandlerPacket.hpp.
Referenced by onDisconnect(), and processPacket().
|
private |
Definition at line 103 of file HandlerPacket.hpp.
Referenced by onEntityEvent(), and processPacket().
|
private |
Definition at line 102 of file HandlerPacket.hpp.
Referenced by onError(), and processPacket().
|
private |
Definition at line 115 of file HandlerPacket.hpp.
Referenced by onGameStart(), and processPacket().
|
private |
Definition at line 122 of file HandlerPacket.hpp.
Referenced by clearAllSessions(), clearSession(), and isRateLimited().
|
private |
Definition at line 109 of file HandlerPacket.hpp.
Referenced by onLobbyCreate(), and processPacket().
|
private |
Definition at line 110 of file HandlerPacket.hpp.
Referenced by onLobbyCreateResponse(), and processPacket().
|
private |
Definition at line 111 of file HandlerPacket.hpp.
Referenced by onLobbyJoin(), and processPacket().
|
private |
Definition at line 112 of file HandlerPacket.hpp.
Referenced by onLobbyJoinResponse(), and processPacket().
|
private |
Definition at line 113 of file HandlerPacket.hpp.
Referenced by onLobbyLeave(), and processPacket().
|
private |
Definition at line 107 of file HandlerPacket.hpp.
Referenced by onLobbyListRequest(), and processPacket().
|
private |
Definition at line 108 of file HandlerPacket.hpp.
Referenced by onLobbyListResponse(), and processPacket().
|
private |
Definition at line 114 of file HandlerPacket.hpp.
Referenced by onLobbyUpdate(), and processPacket().
|
private |
Definition at line 100 of file HandlerPacket.hpp.
Referenced by onPing(), and processPacket().
|
private |
Definition at line 101 of file HandlerPacket.hpp.
Referenced by onPong(), and processPacket().
|
private |
Definition at line 123 of file HandlerPacket.hpp.
Referenced by isRateLimited(), and setRateLimitInterval().
|
private |
Definition at line 116 of file HandlerPacket.hpp.
Referenced by onStartGameRequest(), and processPacket().
|
private |
Definition at line 119 of file HandlerPacket.hpp.
Referenced by getStats(), resetStats(), and updateStats().
|
private |
Definition at line 99 of file HandlerPacket.hpp.
Referenced by onWorldState(), and processPacket().