PACS System 0.1.0
PACS DICOM system library
Loading...
Searching...
No Matches
server_config.h
Go to the documentation of this file.
1// BSD 3-Clause License
2// Copyright (c) 2021-2025, 🍀☀🌕🌥 🌊
3// See the LICENSE file in the project root for full license information.
4
17#ifndef PACS_NETWORK_SERVER_CONFIG_HPP
18#define PACS_NETWORK_SERVER_CONFIG_HPP
19
21
22#include <chrono>
23#include <cstdint>
24#include <string>
25#include <vector>
26
27namespace kcenon::pacs::network {
28
47 std::string ae_title{"PACS_SCP"};
48
50 uint16_t port{11112};
51
53 size_t max_associations{20};
54
57
59 std::chrono::seconds idle_timeout{300};
60
62 std::chrono::seconds association_timeout{30};
63
65 std::vector<std::string> ae_whitelist;
66
68 std::string implementation_class_uid{"1.2.826.0.1.3680043.2.1545.1"};
69
71 std::string implementation_version_name{"PACS_SYSTEM_001"};
72
75
79 server_config() = default;
80
86 server_config(std::string ae, uint16_t listen_port)
87 : ae_title(std::move(ae))
88 , port(listen_port) {}
89};
90
96 uint64_t total_associations{0};
97
100
103
106
108 uint64_t bytes_received{0};
109
111 uint64_t bytes_sent{0};
112
114 std::chrono::steady_clock::time_point start_time{};
115
117 std::chrono::steady_clock::time_point last_activity{};
118
123 [[nodiscard]] std::chrono::seconds uptime() const noexcept {
124 auto now = std::chrono::steady_clock::now();
125 return std::chrono::duration_cast<std::chrono::seconds>(now - start_time);
126 }
127};
128
129} // namespace kcenon::pacs::network
130
131#endif // PACS_NETWORK_SERVER_CONFIG_HPP
constexpr uint32_t DEFAULT_MAX_PDU_LENGTH
Maximum PDU length recommended by DICOM (16384 bytes)
Definition pdu_types.h:276
size_t max_associations
Maximum concurrent associations (0 = unlimited)
server_config()=default
Default constructor with sensible defaults.
std::chrono::seconds idle_timeout
Idle timeout for associations (0 = no timeout)
uint32_t max_pdu_size
Maximum PDU size for data transfer.
std::vector< std::string > ae_whitelist
AE Title whitelist (empty = accept all)
std::string implementation_version_name
Implementation Version Name.
uint16_t port
Port to listen on (default: 11112, standard alternate DICOM port)
std::string ae_title
Application Entity Title for this server (16 chars max)
server_config(std::string ae, uint16_t listen_port)
Construct with minimal required parameters.
std::string implementation_class_uid
Implementation Class UID.
bool accept_unknown_calling_ae
Accept unknown calling AE titles (when whitelist is non-empty)
std::chrono::seconds association_timeout
Timeout for association negotiation.
Statistics for server monitoring.
std::chrono::steady_clock::time_point last_activity
Time of last activity.
uint64_t total_associations
Total associations since server start.
uint64_t messages_processed
Total DIMSE messages processed.
std::chrono::seconds uptime() const noexcept
Get server uptime.
size_t active_associations
Currently active associations.
std::chrono::steady_clock::time_point start_time
Server start time.
uint64_t bytes_received
Total bytes received.
uint64_t rejected_associations
Total associations rejected due to limit.