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

Method WatchdogMessage

server/src/main.cpp:451–593  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

449
450
451void CMain::WatchdogMessage(int ClientNetID, double load_1, double load_5, double load_15, double ping_10010, double ping_189, double ping_10086,
452 double time_10010, double time_189, double time_10086, double tcp_count, double udp_count, double process_count, double thread_count,
453 double network_rx, double network_tx, double network_in, double network_out, double last_network_in, double last_network_out, double memory_total, double memory_used,
454 double swap_total, double swap_used, double hdd_total, double hdd_used, double io_read, double io_write, double cpu,
455 double online4, double online6)
456{
457 int ID = 0;
458 while (strcmp(Watchdog(ID)->m_aName, "NULL"))
459 {
460// Exprtk库默认使用窄字符类型,但可能会出现中文等Unicode字符无法正确解析的问题。
461// todo: 为解决此问题,可以使用宽字符类型替换Exprtk库中默认的窄字符类型。
462// #include <string>
463// #include <vector>
464// #include <exprtk.hpp>
465// typedef exprtk::expression<wchar_t> expression_type;
466// typedef exprtk::parser<wchar_t> parser_type;
467// int main()
468// {
469// std::wstring expression_string = L"sin(x)";
470// expression_type expression;
471// parser_type parser;
472// parser.compile(expression_string, expression);
473// double x = 3.14;
474// double result = expression.value();
475// return 0;
476// }
477 typedef exprtk::symbol_table<double> symbol_table_t;
478 typedef exprtk::expression<double> expression_t;
479 typedef exprtk::parser<double> parser_t;
480 const std::string expression_string = Watchdog(ID)->m_aRule;
481 int ClientID = ClientNetToClient(ClientNetID);
482 if(ClientID < 0 || ClientID >= NET_MAX_CLIENTS) {
483 ID++;
484 continue; // 无效客户端,跳过当前 watchdog 规则
485 }
486 std::string username = Client(ClientID)->m_aUsername;
487 std::string name = Client(ClientID)->m_aName;
488 std::string type = Client(ClientID)->m_aType;
489 std::string host = Client(ClientID)->m_aHost;
490 std::string location = Client(ClientID)->m_aLocation;
491
492 symbol_table_t symbol_table;
493 symbol_table.add_stringvar("username", username);
494 symbol_table.add_stringvar("name", name);
495 symbol_table.add_stringvar("type", type);
496 symbol_table.add_stringvar("host", host);
497 symbol_table.add_stringvar("location", location);
498 symbol_table.add_variable("load_1",load_1);
499 symbol_table.add_variable("load_5",load_5);
500 symbol_table.add_variable("load_15",load_15);
501 symbol_table.add_variable("ping_10010",ping_10010);
502 symbol_table.add_variable("ping_189",ping_189);
503 symbol_table.add_variable("ping_10086",ping_10086);
504 symbol_table.add_variable("time_10010",time_10010);
505 symbol_table.add_variable("time_189",time_189);
506 symbol_table.add_variable("time_10086",time_10086);
507 symbol_table.add_variable("tcp_count",tcp_count);
508 symbol_table.add_variable("udp_count",udp_count);

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected