X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fnet%2FConnectionHandler.hpp;h=be01d10add35ab3b597c4cec5c5efa5d8d17f4c5;hb=c256dca7c6ca2c7f8eeffae53c02fe62bd892198;hp=77bcd7b4da179d8ab52f2c697e7eae2f4da6820f;hpb=51fda2c924eaa28082adeb875f93d4715f881b15;p=blank.git diff --git a/src/net/ConnectionHandler.hpp b/src/net/ConnectionHandler.hpp index 77bcd7b..be01d10 100644 --- a/src/net/ConnectionHandler.hpp +++ b/src/net/ConnectionHandler.hpp @@ -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; + }; }