]> git.localhorst.tv Git - blank.git/blobdiff - src/net/ConnectionHandler.hpp
measure packet round trip time
[blank.git] / src / net / ConnectionHandler.hpp
index 77bcd7b4da179d8ab52f2c697e7eae2f4da6820f..be01d10add35ab3b597c4cec5c5efa5d8d17f4c5 100644 (file)
@@ -13,8 +13,12 @@ class ConnectionHandler {
 public:
        ConnectionHandler();
 
+       /// packet loss as factor
        float PacketLoss() const noexcept { return packet_loss; }
+       /// smooth average round trip time in milliseconds
+       float RoundTripTime() const noexcept { return rtt; }
 
+       void PacketSent(std::uint16_t);
        void PacketLost(std::uint16_t);
        void PacketReceived(std::uint16_t);
 
@@ -24,6 +28,9 @@ public:
 
 private:
        void UpdatePacketLoss() noexcept;
+       void UpdateRTT(std::uint16_t) noexcept;
+       bool SamplePacket(std::uint16_t) const noexcept;
+       int HeadDiff(std::uint16_t) const noexcept;
 
        // called as soon as the remote end ack'd given packet
        virtual void OnPacketReceived(std::uint16_t) { }
@@ -49,6 +56,11 @@ private:
        unsigned int packets_received;
        float packet_loss;
 
+       Uint32 stamps[16];
+       std::size_t stamp_cursor;
+       std::uint16_t stamp_last;
+       float rtt;
+
 };
 
 }