]> git.localhorst.tv Git - blank.git/blobdiff - src/net/ConnectionHandler.hpp
keep track of packet loss
[blank.git] / src / net / ConnectionHandler.hpp
index 6e18da2727821b754904a3ebcc39534714f3b881..942826b4329349a9b58f8bd1dad2cccf93ed17be 100644 (file)
@@ -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;
+
 };
 
 }