X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fnet%2FConnectionHandler.hpp;fp=src%2Fnet%2FConnectionHandler.hpp;h=942826b4329349a9b58f8bd1dad2cccf93ed17be;hb=8dc262b12992c7cd8d4bee0fa4114ee3fb6dcd87;hp=6e18da2727821b754904a3ebcc39534714f3b881;hpb=4ab42baf0439a08889188843a6ffe2d5fa479b46;p=blank.git diff --git a/src/net/ConnectionHandler.hpp b/src/net/ConnectionHandler.hpp index 6e18da2..942826b 100644 --- a/src/net/ConnectionHandler.hpp +++ b/src/net/ConnectionHandler.hpp @@ -11,16 +11,25 @@ namespace blank { class ConnectionHandler { public: + ConnectionHandler(); + + float PacketLoss() const noexcept { return packet_loss; } + + void PacketLost(std::uint16_t); + void PacketReceived(std::uint16_t); + void Handle(const UDPpacket &); + virtual void OnTimeout() { } + +private: + void UpdatePacketLoss() noexcept; + // called as soon as the remote end ack'd given packet virtual void OnPacketReceived(std::uint16_t) { } // called if the remote end probably didn't get given packet virtual void OnPacketLost(std::uint16_t) { } - virtual void OnTimeout() { } - -private: virtual void On(const Packet::Ping &) { } virtual void On(const Packet::Login &) { } virtual void On(const Packet::Join &) { } @@ -33,6 +42,11 @@ private: virtual void On(const Packet::ChunkBegin &) { } virtual void On(const Packet::ChunkData &) { } +private: + unsigned int packets_lost; + unsigned int packets_received; + float packet_loss; + }; }