/
gerrero
/
RequestsAnalyzator
Обзор
Документация
Войти
/
gerrero
/
RequestsAnalyzator
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/main.cpp
73 строки
2 KB
Кирилл Матвеев
create: config.yaml, protocol.h, stend.h, tcp_client.cpp, analyzer.cpp, tcp_client.h, ssr_service.h, stend.cpp, analyzer.h, main.cpp, ssr_service.cpp, test_simulators.cpp, CMakeLists.txt, README.md
28 май 2026, 11:41
Верифицирован
28 май 2026, 11:41
9b02f48
Код
Авторство
О чём код?
#include "ssr_service.h" #include "stend.h" #include "analyzer.h" #include <yaml-cpp/yaml.h> #include <boost/asio.hpp> #include <iostream> #include <thread> #include <atomic> std::atomic<bool> running{true}; void waitForStop() { std::cout << "Нажмите Enter для завершения...\n"; std::cin.get(); running = false; } int main() { std::string ssr_ip = "127.0.0.1"; int ssr_port = 8081; std::string stend_ip = "127.0.0.1"; int stend_port = 8082; bool reconnect = true; int reconnect_delay = 3; std::string log_path = "analyzer.log"; try { auto cfg = YAML::LoadFile("config/config.yaml"); ssr_ip = cfg["ssr"]["ip"].as<std::string>(); ssr_port = cfg["ssr"]["port"].as<int>(); stend_ip = cfg["stend"]["ip"].as<std::string>(); stend_port = cfg["stend"]["port"].as<int>(); reconnect = cfg["ssr"]["reconnect"].as<bool>(); reconnect_delay = cfg["ssr"]["reconnect_delay_sec"].as<int>(); log_path = cfg["analyzer"]["log_path"].as<std::string>(); } catch (...) { std::cerr << "Конфиг не загружен, значения по умолчанию\n"; } boost::asio::io_context io; Analyzer analyzer(log_path); SSRService ssr(io, ssr_ip, ssr_port, reconnect, reconnect_delay); Stend stend(io, stend_ip, stend_port, reconnect, reconnect_delay); ssr.setDataCallback([&](const uint8_t* d, size_t n) { analyzer.addSSRPacket(d, n); }); stend.setDataCallback([&](const uint8_t* d, size_t n) { analyzer.addStendPacket(d, n); }); if (!ssr.connect()) std::cerr << "Не удалось подключиться к SSR\n"; if (!stend.connect()) std::cerr << "Не удалось подключиться к Стенду\n"; std::thread stopThread(waitForStop); std::thread t([&] { while (running) { if (!ssr.isConnected()) { std::cout << "Переподключение SSR...\n"; analyzer.onDisconnect(); ssr.connect(); } if (!stend.isConnected()) { std::cout << "Переподключение Стенда...\n"; analyzer.onDisconnect(); stend.connect(); } std::this_thread::sleep_for(std::chrono::seconds(1)); } analyzer.onDisconnect(); }); io.run(); t.join(); stopThread.join(); return 0; }