+ std::stringstream stat;\r
+ DWORD Written = 0;\r
+ float kbitpersec_in, kbitpersec_out, kbitpersec_total;\r
+\r
+ PROCESS_MEMORY_COUNTERS MemCounters;\r
+\r
+ ServerInstance->SE->GetStats(kbitpersec_in, kbitpersec_out, kbitpersec_total);\r
+\r
+ bool HaveMemoryStats = GetProcessMemoryInfo(GetCurrentProcess(), &MemCounters, sizeof(MemCounters));\r
+\r
+ stat << "name " << ServerInstance->Config->ServerName << std::endl;\r
+ stat << "gecos " << ServerInstance->Config->ServerDesc << std::endl;\r
+ stat << "numlocalusers " << ServerInstance->Users->LocalUserCount() << std::endl;\r
+ stat << "numusers " << ServerInstance->Users->clientlist->size() << std::endl;\r
+ stat << "numchannels " << ServerInstance->chanlist->size() << std::endl;\r
+ stat << "numopers " << ServerInstance->Users->OperCount() << std::endl;\r
+ stat << "timestamp " << ServerInstance->Time() << std::endl;\r
+ stat << "pid " << GetProcessId(GetCurrentProcess()) << std::endl;\r
+ stat << "request " << oldrequest << std::endl;\r
+ stat << "result " << this->GetResult() << std::endl;\r
+ stat << "kbitspersectotal " << kbitpersec_total << std::endl;\r
+ stat << "kbitspersecout " << kbitpersec_out << std::endl;\r
+ stat << "kbitspersecin " << kbitpersec_in << std::endl;\r
+ stat << "uptime " << ServerInstance->Time() - ServerInstance->startup_time << std::endl;\r
+ stat << "cpu " << getcpu() << std::endl;\r
+ if (HaveMemoryStats)\r
+ {\r
+ stat << "workingset " << MemCounters.WorkingSetSize << std::endl;\r
+ stat << "pagefile " << MemCounters.PagefileUsage << std::endl;\r
+ stat << "pagefaults " << MemCounters.PageFaultCount << std::endl;\r
+ }\r
+\r
+ stat << "END" << std::endl;\r