57 lines
1.3 KiB
C++
57 lines
1.3 KiB
C++
#include "media_server_app.h"
|
|
|
|
#include <iostream>
|
|
#include <signal.h>
|
|
#include <string>
|
|
|
|
#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
|