PACS System 0.1.0
PACS DICOM system library
Loading...
Searching...
No Matches
service_interfaces.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
18#pragma once
19
25
26#include <chrono>
27#include <memory>
28#include <string>
29
30namespace kcenon::pacs::di {
31
32// =============================================================================
33// Storage Interface
34// =============================================================================
35
45
46// =============================================================================
47// Codec Interface
48// =============================================================================
49
59
60// =============================================================================
61// Network Interface
62// =============================================================================
63
76public:
77 virtual ~IDicomNetwork() = default;
78
79 // =========================================================================
80 // Server Operations
81 // =========================================================================
82
90 [[nodiscard]] virtual std::unique_ptr<network::dicom_server> create_server(
91 const network::server_config& config,
92 const integration::tls_config& tls_cfg = {}) = 0;
93
94 // =========================================================================
95 // Client Operations
96 // =========================================================================
97
106
116 connect(const std::string& host, uint16_t port,
117 std::chrono::milliseconds timeout = std::chrono::seconds{30}) = 0;
118
119protected:
120 IDicomNetwork() = default;
121 IDicomNetwork(const IDicomNetwork&) = default;
125};
126
127// =============================================================================
128// Default Network Implementation
129// =============================================================================
130
136class DicomNetworkService final : public IDicomNetwork {
137public:
139 ~DicomNetworkService() override = default;
140
141 [[nodiscard]] std::unique_ptr<network::dicom_server> create_server(
142 const network::server_config& config,
143 const integration::tls_config& tls_cfg = {}) override {
144 return integration::network_adapter::create_server(config, tls_cfg);
145 }
146
148 connect(const integration::connection_config& config) override {
150 }
151
153 connect(const std::string& host, uint16_t port,
154 std::chrono::milliseconds timeout = std::chrono::seconds{30}) override {
155 return integration::network_adapter::connect(host, port, timeout);
156 }
157};
158
159} // namespace kcenon::pacs::di
Default implementation of IDicomNetwork using network_adapter.
std::unique_ptr< network::dicom_server > create_server(const network::server_config &config, const integration::tls_config &tls_cfg={}) override
Create a DICOM server.
integration::Result< integration::network_adapter::session_ptr > connect(const integration::connection_config &config) override
Connect to a remote DICOM peer.
integration::Result< integration::network_adapter::session_ptr > connect(const std::string &host, uint16_t port, std::chrono::milliseconds timeout=std::chrono::seconds{30}) override
Connect to a remote DICOM peer (simplified)
Network service interface for DICOM communication.
IDicomNetwork & operator=(const IDicomNetwork &)=default
IDicomNetwork & operator=(IDicomNetwork &&)=default
virtual std::unique_ptr< network::dicom_server > create_server(const network::server_config &config, const integration::tls_config &tls_cfg={})=0
Create a DICOM server.
virtual integration::Result< integration::network_adapter::session_ptr > connect(const std::string &host, uint16_t port, std::chrono::milliseconds timeout=std::chrono::seconds{30})=0
Connect to a remote DICOM peer (simplified)
IDicomNetwork(const IDicomNetwork &)=default
virtual ~IDicomNetwork()=default
IDicomNetwork(IDicomNetwork &&)=default
virtual integration::Result< integration::network_adapter::session_ptr > connect(const integration::connection_config &config)=0
Connect to a remote DICOM peer.
Abstract base class for image compression codecs.
Simple result type for error handling when common_system is unavailable.
static std::unique_ptr< network::dicom_server > create_server(const network::server_config &config, const tls_config &tls_cfg={})
Create a DICOM server using network_system.
static Result< session_ptr > connect(const connection_config &config)
Multi-threaded DICOM server for handling multiple associations.
Logger interface for dependency injection.
Adapter for integrating network_system for DICOM protocol.
Abstract storage interface for DICOM persistent storage backends.
Configuration for client connections.
Configuration for TLS/SSL secure transport.