From 67e6587d87e22b358ce2ca4d5ef1464a4c625159 Mon Sep 17 00:00:00 2001 From: RD42 <42702181+dashr9230@users.noreply.github.com> Date: Sun, 14 Apr 2024 22:23:30 +0800 Subject: [PATCH] [raknet] Implement `ReliabilityLayer::SetPing(...)` --- raknet/ReliabilityLayer.cpp | 22 ++++++++++++++++++++++ raknet/ReliabilityLayer.h | 16 +++++++++++++++- 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/raknet/ReliabilityLayer.cpp b/raknet/ReliabilityLayer.cpp index 3cacca6..2c66655 100644 --- a/raknet/ReliabilityLayer.cpp +++ b/raknet/ReliabilityLayer.cpp @@ -15,6 +15,28 @@ ReliabilityLayer::ReliabilityLayer() void ReliabilityLayer::InitializeVariables( void ) { // TODO: ReliabilityLayer::InitializeVariables + + SetPing( 1000 ); +} + +//------------------------------------------------------------------------------------------------------- +// How long to wait between packet resends +//------------------------------------------------------------------------------------------------------- +void ReliabilityLayer::SetPing( RakNetTime i ) +{ + //assert(i < (RakNetTimeNS)timeoutTime*1000); + if (i > timeoutTime) + ping=500; + else + ping = i; + if (ping < 30) + ping=30; // Leave a buffer for variations in ping +#ifndef _RELEASE + if (ping < (RakNetTime)(minExtraPing+extraPingVariance)*2) + ping=(minExtraPing+extraPingVariance)*2; +#endif + + UpdateNextActionTime(); } //------------------------------------------------------------------------------------------------------- diff --git a/raknet/ReliabilityLayer.h b/raknet/ReliabilityLayer.h index a01cc4f..3161621 100644 --- a/raknet/ReliabilityLayer.h +++ b/raknet/ReliabilityLayer.h @@ -13,6 +13,10 @@ public: /// Constructor ReliabilityLayer(); + /// Sets the ping, which is used by the reliability layer to determine how long to wait for resends. Mostly for flow control. + /// \param[in] The ping time. + void SetPing( RakNetTime i ); + private: // Initialize the variables @@ -25,9 +29,19 @@ private: RakNetTime ping; - char _gap[1020]; + char _gap2D1[2]; + + RakNetTime timeoutTime; // How long to wait in MS before timing someone out + + char _gap2D7[1014]; RakNetTimeNS ackTimeIncrement; + + char _gap6D1[25]; + + // Internet simulator + RakNetTime minExtraPing, extraPingVariance; + }; #endif