diff options
Diffstat (limited to 'src/server/game/Handlers/MovementHandler.cpp')
-rw-r--r-- | src/server/game/Handlers/MovementHandler.cpp | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/src/server/game/Handlers/MovementHandler.cpp b/src/server/game/Handlers/MovementHandler.cpp index b3ce3b97892..f458eca6f41 100644 --- a/src/server/game/Handlers/MovementHandler.cpp +++ b/src/server/game/Handlers/MovementHandler.cpp @@ -39,6 +39,7 @@ #include <boost/accumulators/statistics/variance.hpp> #include <boost/accumulators/accumulators.hpp> #include <boost/accumulators/statistics.hpp> +#include <boost/circular_buffer.hpp> void WorldSession::HandleMoveWorldportAckOpcode(WorldPacket & /*recvData*/) { @@ -954,7 +955,7 @@ void WorldSession::HandleTimeSyncResponse(WorldPacket& recvData) serverTime = clockDelta + clientTime */ int64 clockDelta = (int64)serverTimeAtSent + (int64)lagDelay - (int64)clientTimestamp; - _timeSyncClockDeltaQueue.push_back(std::pair<int64, uint32>(clockDelta, roundTripDuration)); + _timeSyncClockDeltaQueue->push_back(std::pair<int64, uint32>(clockDelta, roundTripDuration)); ComputeNewClockDelta(); } @@ -967,18 +968,18 @@ void WorldSession::ComputeNewClockDelta() accumulator_set<uint32, features<tag::mean, tag::median, tag::variance(lazy)> > latencyAccumulator; - for (auto pair : _timeSyncClockDeltaQueue) - latencyAccumulator(pair.second); + for (auto [_, roundTripDuration] : *_timeSyncClockDeltaQueue) + latencyAccumulator(roundTripDuration); uint32 latencyMedian = static_cast<uint32>(std::round(median(latencyAccumulator))); uint32 latencyStandardDeviation = static_cast<uint32>(std::round(sqrt(variance(latencyAccumulator)))); accumulator_set<int64, features<tag::mean> > clockDeltasAfterFiltering; uint32 sampleSizeAfterFiltering = 0; - for (auto pair : _timeSyncClockDeltaQueue) + for (auto [clockDelta, roundTripDuration] : *_timeSyncClockDeltaQueue) { - if (pair.second < latencyStandardDeviation + latencyMedian) { - clockDeltasAfterFiltering(pair.first); + if (roundTripDuration < latencyStandardDeviation + latencyMedian) { + clockDeltasAfterFiltering(clockDelta); sampleSizeAfterFiltering++; } } @@ -990,8 +991,5 @@ void WorldSession::ComputeNewClockDelta() _timeSyncClockDelta = meanClockDelta; } else if (_timeSyncClockDelta == 0) - { - std::pair<int64, uint32> back = _timeSyncClockDeltaQueue.back(); - _timeSyncClockDelta = back.first; - } + _timeSyncClockDelta = _timeSyncClockDeltaQueue->back().first; } |