Skip to content

Commit eb80ed1

Browse files
committed
Add max & total load stats for all the server session
Program will output these statistics to screen when server closes smoothly. To see them, use Ctrl-C on the server and read the console.
1 parent b89ff3e commit eb80ed1

File tree

2 files changed

+63
-3
lines changed

2 files changed

+63
-3
lines changed

POSIXMain.cpp

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,12 @@ struct BanEntry
7373
};
7474
static std::vector<BanEntry> banIPList;
7575

76+
static std::uint64_t totalNumMessagesIn = 0, totalNumMessagesOut = 0;
77+
static std::uint64_t totalBytesIn = 0, totalBytesOut = 0;
78+
static size_t maxClients = 0, maxChannels = 0;
79+
static size_t maxNumMessagesIn = 0, maxNumMessagesOut = 0;
80+
static size_t maxBytesInInOneSec = 0, maxBytesOutInOneSec = 0;
81+
7682
static size_t numMessagesIn = 0, numMessagesOut = 0;
7783
static size_t bytesIn = 0, bytesOut = 0;
7884
struct clientstats
@@ -188,7 +194,7 @@ int main()
188194
(flashpolicypath.empty() ? "Flash not hosting"sv : "Flash policy hosting on TCP port 843"sv) << '.' <<
189195
std::string(flashpolicypath.empty() ? 30 : 5, ' ') << "\r\n"sv << yellow;
190196

191-
globalserver->host(port);
197+
globalserver->host((lw_ui16)port);
192198

193199
if (!flashpolicypath.empty())
194200
globalserver->flash->host(flashpolicypath.c_str());
@@ -233,7 +239,13 @@ int main()
233239
lw_sync_delete(lw_trace_sync);
234240
#endif
235241

236-
std::cout << green << timeBuffer << " | Program completed. Press any key to exit.\r\n"sv;
242+
std::wcout << green << timeBuffer << L" | Program completed.\r\n"sv;
243+
std::wcout << timeBuffer << L" | Total bytes: "sv << totalBytesIn << L" in, "sv << totalBytesOut << L" out.\r\n"sv;
244+
std::wcout << timeBuffer << L" | Total msgs: "sv << totalNumMessagesIn << L" in, "sv << totalNumMessagesOut << L" out.\r\n"sv;
245+
std::wcout << timeBuffer << L" | Max msgs in 1 sec: "sv << maxNumMessagesIn << L" in, "sv << maxNumMessagesOut << L" out.\r\n"sv;
246+
std::wcout << timeBuffer << L" | Max bytes in 1 sec: "sv << maxBytesInInOneSec << L" in, "sv << maxBytesOutInOneSec << L" out.\r\n"sv;
247+
std::wcout << timeBuffer << L" | Press any key to exit.\r\n"sv;
248+
237249
// Clear input for getchar()
238250
std::cin.clear();
239251
std::cin.ignore();
@@ -257,6 +269,11 @@ void UpdateTitle(size_t clientCount)
257269
// konsole: "\x1B]30;%p1%s\x07";
258270
// screen: "\x1Bk%p1%s\x1B";
259271
std::cout << "\033]0;" << name << "\007";
272+
273+
if (maxClients < clientCount)
274+
maxClients = clientCount;
275+
if (maxChannels < channelCount)
276+
maxChannels = channelCount;
260277
}
261278

262279
void OnConnectRequest(lacewing::relayserver &server, std::shared_ptr<lacewing::relayserver::client> client)
@@ -335,8 +352,22 @@ void OnTimerTick(lacewing::timer timer)
335352
else
336353
strcpy(timeBuffer, "XX:XX:XX");
337354

355+
totalNumMessagesIn += numMessagesIn;
356+
totalNumMessagesOut += numMessagesOut;
357+
totalBytesIn += bytesIn;
358+
totalBytesOut += bytesOut;
359+
if (maxNumMessagesIn < numMessagesIn)
360+
maxNumMessagesIn = numMessagesIn;
361+
if (maxNumMessagesOut < numMessagesOut)
362+
maxNumMessagesOut = numMessagesOut;
363+
if (maxBytesInInOneSec < bytesIn)
364+
maxBytesInInOneSec = bytesIn;
365+
if (maxBytesOutInOneSec < bytesOut)
366+
maxBytesOutInOneSec = bytesOut;
367+
338368
std::cout << timeBuffer << " | Last sec received "sv << numMessagesIn << " messages ("sv << bytesIn << " bytes), forwarded "sv
339369
<< numMessagesOut << " ("sv << bytesOut << " bytes)."sv << std::string(15, ' ') << '\r';
370+
std::cout.flush();
340371
numMessagesOut = numMessagesIn = 0U;
341372
bytesIn = bytesOut = 0U;
342373

WindowsMain.cpp

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,12 @@ struct BanEntry
119119
};
120120
static std::vector<BanEntry> banIPList;
121121

122+
static std::uint64_t totalNumMessagesIn = 0, totalNumMessagesOut = 0;
123+
static std::uint64_t totalBytesIn = 0, totalBytesOut = 0;
124+
static size_t maxClients = 0, maxChannels = 0;
125+
static size_t maxNumMessagesIn = 0, maxNumMessagesOut = 0;
126+
static size_t maxBytesInInOneSec = 0, maxBytesOutInOneSec = 0;
127+
122128
static size_t numMessagesIn = 0, numMessagesOut = 0;
123129
static size_t bytesIn = 0, bytesOut = 0;
124130
struct clientstats
@@ -310,7 +316,13 @@ int main()
310316
lw_sync_delete(lw_trace_sync);
311317
#endif
312318

313-
std::wcout << green << timeBuffer << L" | Program completed. Press any key to exit.\r\n"sv;
319+
std::wcout << green << timeBuffer << L" | Program completed.\r\n"sv;
320+
std::wcout << timeBuffer << L" | Total bytes: "sv << totalBytesIn << L" in, "sv << totalBytesOut << L" out.\r\n"sv;
321+
std::wcout << timeBuffer << L" | Total msgs: "sv << totalNumMessagesIn << L" in, "sv << totalNumMessagesOut << L" out.\r\n"sv;
322+
std::wcout << timeBuffer << L" | Max msgs in 1 sec: "sv << maxNumMessagesIn << L" in, "sv << maxNumMessagesOut << L" out.\r\n"sv;
323+
std::wcout << timeBuffer << L" | Max bytes in 1 sec: "sv << maxBytesInInOneSec << L" in, "sv << maxBytesOutInOneSec << L" out.\r\n"sv;
324+
std::wcout << timeBuffer << L" | Press any key to exit.\r\n"sv;
325+
314326
// Clear input for getchar()
315327
std::cin.clear();
316328
std::cin.ignore();
@@ -329,6 +341,10 @@ void UpdateTitle(size_t clientCount)
329341
clientCount, clientCount == 1 ? L"" : L"s",
330342
channelCount, channelCount == 1 ? L"" : L"s");
331343
SetConsoleTitleW(name);
344+
if (maxClients < clientCount)
345+
maxClients = clientCount;
346+
if (maxChannels < channelCount)
347+
maxChannels = channelCount;
332348
}
333349

334350
void OnConnectRequest(lacewing::relayserver &server, std::shared_ptr<lacewing::relayserver::client> client)
@@ -406,6 +422,19 @@ void OnTimerTick(lacewing::timer timer)
406422
std::wcsftime(timeBuffer, sizeof(timeBuffer), L"%T", &timeinfo);
407423
else
408424
wcscpy_s(timeBuffer, sizeof(timeBuffer), L"XX:XX:XX");
425+
426+
totalNumMessagesIn += numMessagesIn;
427+
totalNumMessagesOut += numMessagesOut;
428+
totalBytesIn += bytesIn;
429+
totalBytesOut += bytesOut;
430+
if (maxNumMessagesIn < numMessagesIn)
431+
maxNumMessagesIn = numMessagesIn;
432+
if (maxNumMessagesOut < numMessagesOut)
433+
maxNumMessagesOut = numMessagesOut;
434+
if (maxBytesInInOneSec < bytesIn)
435+
maxBytesInInOneSec = bytesIn;
436+
if (maxBytesOutInOneSec < bytesOut)
437+
maxBytesOutInOneSec = bytesOut;
409438

410439
std::wcout << timeBuffer << L" | Last sec received "sv << numMessagesIn << L" messages ("sv << bytesIn << L" bytes), forwarded "sv
411440
<< numMessagesOut << L" ("sv << bytesOut << L" bytes)."sv << std::wstring(15, L' ') << '\r';

0 commit comments

Comments
 (0)