| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- /*
- ** Command & Conquer Renegade(tm)
- ** Copyright 2025 Electronic Arts Inc.
- **
- ** This program is free software: you can redistribute it and/or modify
- ** it under the terms of the GNU General Public License as published by
- ** the Free Software Foundation, either version 3 of the License, or
- ** (at your option) any later version.
- **
- ** This program is distributed in the hope that it will be useful,
- ** but WITHOUT ANY WARRANTY; without even the implied warranty of
- ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- ** GNU General Public License for more details.
- **
- ** You should have received a copy of the GNU General Public License
- ** along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
- //
- // Filename: netstats.cpp
- // Project: wwnet
- // Author: Tom Spencer-Smith
- // Date: Oct 1998
- // Description:
- //
- //------------------------------------------------------------------------------------
- #include "netstats.h" // I WANNA BE FIRST!
- #include "win.h"
- #include "systimer.h"
- #include "miscutil.h"
- #include "netutil.h"
- #include "wwdebug.h"
- //
- // class defines
- //
- //------------------------------------------------------------------------------------
- cNetStats::cNetStats() :
- LastUnreliablePacketId(-1),
- FreezePacketId(-1)
- {
- Init_Net_Stats();
- }
- //------------------------------------------------------------------------------------
- void cNetStats::Init_Net_Stats()
- {
- StartTime = TIMEGETTIME();
- SampleStartTime = StartTime;
- for (int statistic = 0; statistic < STAT_COUNT; statistic++) {
- StatTotal[statistic] = 0;
- StatAverage[statistic] = 0;
- StatSnapshot[statistic] = 0;
- StatMacroSnapshot[statistic] = 0;
- StatSample[statistic] = 0;
- StatMacroSample[statistic] = 0;
- }
- RemotePacketloss = 0;
- UnreliableCount = 0;
- FreezePacketId = LastUnreliablePacketId;
- RemoteServiceCount = 0;
- }
- //------------------------------------------------------------------------------------
- double cNetStats::Get_Pc_Packetloss_Received() const
- {
- double packetloss_pc = 0;
- int packet_count = LastUnreliablePacketId - FreezePacketId;
- WWASSERT(packet_count >= 0);
- if (packet_count > 0) {
- //
- // Must add 1 to PrevLastUnreliable because packet id starts at 0
- //
- packetloss_pc = 100 * (1 - UnreliableCount / (double) packet_count);
- }
- return packetloss_pc;
- }
- //------------------------------------------------------------------------------------
- void cNetStats::Set_Pc_Packetloss_Sent(double packetloss_pc)
- {
- /*TSS102901
- WWASSERT(packetloss_pc > -MISCUTIL_EPSILON && packetloss_pc < 100 + MISCUTIL_EPSILON);
- RemotePacketloss = packetloss_pc;
- */
- }
- //------------------------------------------------------------------------------------
- void cNetStats::Set_Remote_Service_Count(int remote_service_count)
- {
- //WWASSERT(remote_service_count >= 0);
- RemoteServiceCount = remote_service_count;
- }
- //------------------------------------------------------------------------------------
- bool cNetStats::Update_If_Sample_Done(int this_frame_time, bool force_update)
- {
- bool is_updated = false;
- static int update_count = 0;
- if (force_update || this_frame_time - SampleStartTime > cNetUtil::NETSTATS_SAMPLE_TIME_MS) {
- update_count++;
- double total_time = (this_frame_time - StartTime) / 1000.0;
- if (total_time < MISCUTIL_EPSILON) {
- total_time = MISCUTIL_EPSILON;
- }
- for (int statistic = 0; statistic < STAT_COUNT; statistic++) {
- StatTotal[statistic] += StatSample[statistic];
- StatAverage[statistic] = (UINT) (StatTotal[statistic] / total_time);
- StatSnapshot[statistic] = StatSample[statistic];
- StatMacroSample[statistic] += StatSample[statistic];
- StatSample[statistic] = 0;
- if (update_count % 4 == 0) {
- StatMacroSnapshot[statistic] = StatMacroSample[statistic];
- StatMacroSample[statistic] = 0;
- }
- }
- SampleStartTime = this_frame_time;
- is_updated = true;
- }
- return is_updated;
- }
- //const USHORT cNetStats::SAMPLE_TIME = 500;
- // crash here when exit server thread before client
- //WWASSERT(packetloss_pc >= 0 && packetloss_pc <= 100);
- /*
- //
- // These 2 stats are computed from others
- //
- if (StatSample[STAT_AppByteSent] > 0) {
- StatSample[STAT_AppDataSentPc] = (UINT) (100 * StatSample[STAT_AppByteSent] /
- (double) (StatSample[STAT_AppByteSent] + StatSample[STAT_HdrByteSent]));
- }
- if (StatSample[STAT_AppByteRcv] > 0) {
- StatSample[STAT_AppDataRcvPc] = (UINT) (100 * StatSample[STAT_AppByteRcv] /
- (double) (StatSample[STAT_AppByteRcv] + StatSample[STAT_HdrByteRcv]));
- }
- */
|