34std::atomic<kcenon::pacs::example::pacs_server_app*> g_server{
nullptr};
37void signal_handler(
int signal) {
38 std::cout <<
"\nReceived signal " << signal <<
", shutting down...\n";
40 auto* server = g_server.load();
42 server->request_shutdown();
47void install_signal_handlers() {
48 std::signal(SIGINT, signal_handler);
49 std::signal(SIGTERM, signal_handler);
51 std::signal(SIGHUP, signal_handler);
57int main(
int argc,
char* argv[]) {
60 | _ \ / \ / ___/ ___| / ___| ___ _ ____ _____ _ __
61 | |_) / _ \| | \___ \ \___ \ / _ \ '__\ \ / / _ \ '__|
62 | __/ ___ \ |___ ___) | ___) | __/ | \ V / __/ |
63 |_| /_/ \_\____|____/ |____/ \___|_| \_/ \___|_|
65 Complete DICOM Archive Server
75 install_signal_handlers();
82 std::cerr <<
"Failed to initialize PACS server\n";
87 if (!server.
start()) {
88 std::cerr <<
"Failed to start PACS server\n";
100 std::cout <<
"PACS Server terminated\n";
bool start()
Start the DICOM server.
void print_statistics() const
Get current server statistics.
bool initialize()
Initialize all components.
void wait_for_shutdown()
Wait for server shutdown.
Configuration management for PACS Server sample.
PACS Server application class.
static auto parse_args(int argc, char *argv[]) -> std::optional< pacs_server_config >
Parse configuration from command line arguments.