summaryrefslogtreecommitdiff
path: root/src/net/packetcounters.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/packetcounters.cpp')
-rw-r--r--src/net/packetcounters.cpp128
1 files changed, 128 insertions, 0 deletions
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 <http://www.gnu.org/licenses/>.
+ */
+
+#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 &currentSec, 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);
+}