MCPcopy Create free account
hub / github.com/cppla/ServerStatus / JSONUpdateThread

Method JSONUpdateThread

server/src/main.cpp:595–701  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

593}
594
595void CMain::JSONUpdateThread(void *pUser)
596{
597 CJSONUpdateThreadData *m_pJSONUpdateThreadData = (CJSONUpdateThreadData *)pUser;
598 CClient *pClients = m_pJSONUpdateThreadData->pClients;
599 CConfig *pConfig = m_pJSONUpdateThreadData->pConfig;
600
601 while(gs_Running)
602 {
603 char aFileBuf[2048*NET_MAX_CLIENTS];
604 char *pBuf = aFileBuf;
605
606 str_format(pBuf, sizeof(aFileBuf), "{\n\"servers\": [\n");
607 pBuf += strlen(pBuf);
608
609 for(int i = 0; i < NET_MAX_CLIENTS; i++)
610 {
611 if(!pClients[i].m_Active || pClients[i].m_Disabled)
612 continue;
613
614 if(pClients[i].m_Connected)
615 {
616 // Uptime
617 char aUptime[16];
618 int Days = pClients[i].m_Stats.m_Uptime/60.0/60.0/24.0;
619 if(Days > 0)
620 {
621 if(Days > 1)
622 str_format(aUptime, sizeof(aUptime), "%d 天", Days);
623 else
624 str_format(aUptime, sizeof(aUptime), "%d 天", Days);
625 }
626 else
627 str_format(aUptime, sizeof(aUptime), "%02d:%02d:%02d", (int)(pClients[i].m_Stats.m_Uptime/60.0/60.0), (int)((pClients[i].m_Stats.m_Uptime/60)%60), (int)((pClients[i].m_Stats.m_Uptime)%60));
628
629 // track month network traffic, diff: 2021-10-01 00:05, 5minutes
630 // last_network_in/out is last record flag.
631 time_t currentStamp = (long long)time(/*ago*/0);
632 if(0 == pClients[i].m_LastNetworkIN || (0 != pClients[i].m_Stats.m_NetworkIN && pClients[i].m_LastNetworkIN > pClients[i].m_Stats.m_NetworkIN) || (localtime(&currentStamp)->tm_mday == pClients[i].m_aMonthStart && localtime(&currentStamp)->tm_hour == 0 && localtime(&currentStamp)->tm_min < 5))
633 {
634 pClients[i].m_LastNetworkIN = pClients[i].m_Stats.m_NetworkIN;
635 pClients[i].m_LastNetworkOUT = pClients[i].m_Stats.m_NetworkOUT;
636 }
637
638 str_format(pBuf, sizeof(aFileBuf) - (pBuf - aFileBuf),
639 "{ \"name\": \"%s\",\"type\": \"%s\",\"host\": \"%s\",\"location\": \"%s\",\"online4\": %s, \"online6\": %s, \"uptime\": \"%s\",\"load_1\": %.2f, \"load_5\": %.2f, \"load_15\": %.2f,\"ping_10010\": %.2f, \"ping_189\": %.2f, \"ping_10086\": %.2f,\"time_10010\": %" PRId64 ", \"time_189\": %" PRId64 ", \"time_10086\": %" PRId64 ", \"tcp_count\": %" PRId64 ", \"udp_count\": %" PRId64 ", \"process_count\": %" PRId64 ", \"thread_count\": %" PRId64 ", \"network_rx\": %" PRId64 ", \"network_tx\": %" PRId64 ", \"network_in\": %" PRId64 ", \"network_out\": %" PRId64 ", \"cpu\": %d, \"memory_total\": %" PRId64 ", \"memory_used\": %" PRId64 ", \"swap_total\": %" PRId64 ", \"swap_used\": %" PRId64 ", \"hdd_total\": %" PRId64 ", \"hdd_used\": %" PRId64 ", \"last_network_in\": %" PRId64 ", \"last_network_out\": %" PRId64 ",\"io_read\": %" PRId64 ", \"io_write\": %" PRId64 ",\"custom\": \"%s\", \"os\": \"%s\" },\n",
640 pClients[i].m_aName,pClients[i].m_aType,pClients[i].m_aHost,pClients[i].m_aLocation,
641 pClients[i].m_Stats.m_Online4 ? "true" : "false",pClients[i].m_Stats.m_Online6 ? "true" : "false",
642 aUptime, pClients[i].m_Stats.m_Load_1, pClients[i].m_Stats.m_Load_5, pClients[i].m_Stats.m_Load_15, pClients[i].m_Stats.m_ping_10010, pClients[i].m_Stats.m_ping_189, pClients[i].m_Stats.m_ping_10086,
643 pClients[i].m_Stats.m_time_10010, pClients[i].m_Stats.m_time_189, pClients[i].m_Stats.m_time_10086,pClients[i].m_Stats.m_tcpCount,pClients[i].m_Stats.m_udpCount,pClients[i].m_Stats.m_processCount,pClients[i].m_Stats.m_threadCount,
644 pClients[i].m_Stats.m_NetworkRx, pClients[i].m_Stats.m_NetworkTx, pClients[i].m_Stats.m_NetworkIN, pClients[i].m_Stats.m_NetworkOUT, (int)pClients[i].m_Stats.m_CPU, pClients[i].m_Stats.m_MemTotal, pClients[i].m_Stats.m_MemUsed,
645 pClients[i].m_Stats.m_SwapTotal, pClients[i].m_Stats.m_SwapUsed, pClients[i].m_Stats.m_HDDTotal, pClients[i].m_Stats.m_HDDUsed,
646 pClients[i].m_Stats.m_NetworkIN == 0 || pClients[i].m_LastNetworkIN == 0 ? pClients[i].m_Stats.m_NetworkIN : pClients[i].m_LastNetworkIN,
647 pClients[i].m_Stats.m_NetworkOUT == 0 || pClients[i].m_LastNetworkOUT == 0 ? pClients[i].m_Stats.m_NetworkOUT : pClients[i].m_LastNetworkOUT,
648 pClients[i].m_Stats.m_IORead, pClients[i].m_Stats.m_IOWrite,
649 pClients[i].m_Stats.m_aCustom,
650 pClients[i].m_Stats.m_aOS[0] ? pClients[i].m_Stats.m_aOS : "");
651 pBuf += strlen(pBuf);
652 }

Callers

nothing calls this directly

Calls 9

str_formatFunction · 0.85
io_openFunction · 0.85
dbg_msgFunction · 0.85
io_writeFunction · 0.85
io_flushFunction · 0.85
io_closeFunction · 0.85
fs_renameFunction · 0.85
thread_sleepFunction · 0.85
SSLCertMethod · 0.80

Tested by

no test coverage detected