From 3eeae12c498d1a4dbe969462d2ba841f77ee3ccb Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sun, 2 Jan 2011 01:48:38 +0200 Subject: Initial commit. This code based on mana client http://www.gitorious.org/mana/mana and my private repository. --- src/net/packetcounters.cpp | 128 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 src/net/packetcounters.cpp (limited to 'src/net/packetcounters.cpp') diff --git a/src/net/packetcounters.cpp b/src/net/packetcounters.cpp new file mode 100644 index 000000000..40ab72024 --- /dev/null +++ b/src/net/packetcounters.cpp @@ -0,0 +1,128 @@ +/* + * The Mana Client + * Copyright (C) 2004-2009 The Mana World Development Team + * Copyright (C) 2009-2010 The Mana Developers + * + * This file is part of The Mana Client. + * + * 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 2 of the License, or + * 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 . + */ + +#include "net/packetcounters.h" + +extern volatile int cur_time; +extern volatile bool runCounters; + +int PacketCounters::mInCurrentSec = 0; +int PacketCounters::mInBytes = 0; +int PacketCounters::mInBytesCalc = 0; +int PacketCounters::mInPackets = 0; +int PacketCounters::mInPacketsCalc = 0; +int PacketCounters::mOutCurrentSec = 0; +int PacketCounters::mOutBytes = 0; +int PacketCounters::mOutBytesCalc = 0; +int PacketCounters::mOutPackets = 0; +int PacketCounters::mOutPacketsCalc = 0; + +void PacketCounters::incInBytes(int cnt) +{ + if (!runCounters) + return; + + updateCounter(PacketCounters::mInCurrentSec, PacketCounters::mInBytesCalc, + PacketCounters::mInBytes); + + PacketCounters::mInBytes += cnt; +} + +void PacketCounters::incInPackets() +{ + if (!runCounters) + return; + + updateCounter(PacketCounters::mInCurrentSec, + PacketCounters::mInPacketsCalc, PacketCounters::mInPackets); + + PacketCounters::mInPackets ++; +} + +int PacketCounters::getInBytes() +{ + return PacketCounters::mInBytesCalc; +} + +int PacketCounters::getInPackets() +{ + return PacketCounters::mInPacketsCalc; +} + +void PacketCounters::incOutBytes(int cnt) +{ + if (!runCounters) + return; + + updateCounter(PacketCounters::mOutCurrentSec, + PacketCounters::mOutBytesCalc, PacketCounters::mOutBytes); + + PacketCounters::mOutBytes += cnt; +} + +void PacketCounters::incOutPackets() +{ + if (!runCounters) + return; + + updateCounter(PacketCounters::mOutCurrentSec, + PacketCounters::mOutPacketsCalc, + PacketCounters::mOutPackets); + + PacketCounters::mOutPackets ++; +} + +int PacketCounters::getOutBytes() +{ + return PacketCounters::mOutBytesCalc; +} + +int PacketCounters::getOutPackets() +{ + return PacketCounters::mOutPacketsCalc; +} + + +void PacketCounters::updateCounter(int ¤tSec, int &calc, int &counter) +{ + int idx = cur_time % 60; + if (currentSec != idx) + { + currentSec = idx; + calc = counter; + counter = 0; + } +} + +void PacketCounters::update() +{ + if (!runCounters) + return; + + updateCounter(PacketCounters::mInCurrentSec, PacketCounters::mInBytesCalc, + PacketCounters::mInBytes); + updateCounter(PacketCounters::mInCurrentSec, + PacketCounters::mInPacketsCalc, PacketCounters::mInPackets); + updateCounter(PacketCounters::mOutCurrentSec, + PacketCounters::mOutBytesCalc, PacketCounters::mOutBytes); + updateCounter(PacketCounters::mOutCurrentSec, + PacketCounters::mOutPacketsCalc, PacketCounters::mOutPackets); +} -- cgit v1.2.3-60-g2f50