#include "media_server_app.h" #include #include #include #include "graph_manager.h" #include "utils/simple_json.h" namespace rk3588 { namespace { GraphManager* g_manager = nullptr; void HandleSignal(int) { if (g_manager) { std::cerr << "\n[MediaServerApp] Caught signal, stopping...\n"; g_manager->RequestStop(); } } } // namespace MediaServerApp::MediaServerApp(std::string config_path) : config_path_(std::move(config_path)) {} int MediaServerApp::Start() { SimpleJson root_cfg; std::string err; if (!GraphManager::LoadConfigFile(config_path_, root_cfg, err)) { std::cerr << "[MediaServerApp] Failed to load config: " << err << "\n"; return 1; } if (!graph_manager_.Build(root_cfg, err)) { std::cerr << "[MediaServerApp] Failed to build graphs: " << err << "\n"; return 1; } g_manager = &graph_manager_; signal(SIGINT, HandleSignal); signal(SIGTERM, HandleSignal); if (!graph_manager_.StartAll()) { std::cerr << "[MediaServerApp] Failed to start graphs\n"; return 1; } std::cout << "[MediaServerApp] Running. Press Ctrl+C to stop.\n"; graph_manager_.BlockUntilStop(); std::cout << "[MediaServerApp] Shutdown complete.\n"; return 0; } } // namespace rk3588