|
PACS System 0.1.0
PACS DICOM system library
|
Adapter for integrating pipeline with DICOM server components. More...
#include <pipeline_adapter.h>

Public Types | |
| using | send_callback |
| Type for network send callback. | |
| using | association_callback |
| Type for association event callback. | |
| using | session_event_callback |
| Type for session event callback. | |
| using | service_handler = storage_query_exec_job::service_handler |
| Service handler type. | |
Public Member Functions | |
| pipeline_adapter () | |
| Construct adapter with default configuration. | |
| pipeline_adapter (const pipeline_config &config) | |
| Construct adapter with custom configuration. | |
| ~pipeline_adapter () | |
| Destructor - ensures graceful shutdown. | |
| pipeline_adapter (const pipeline_adapter &)=delete | |
| pipeline_adapter & | operator= (const pipeline_adapter &)=delete |
| pipeline_adapter (pipeline_adapter &&)=delete | |
| pipeline_adapter & | operator= (pipeline_adapter &&)=delete |
| auto | start () -> VoidResult |
| Start the pipeline adapter. | |
| auto | stop () -> VoidResult |
| Stop the pipeline adapter. | |
| auto | is_running () const noexcept -> bool |
| Check if the adapter is running. | |
| void | register_session (uint64_t session_id, session_context context) |
| Register a new session. | |
| void | unregister_session (uint64_t session_id) |
| Unregister a session. | |
| auto | get_session (uint64_t session_id) -> std::optional< session_context > |
| Get session context. | |
| auto | get_active_session_count () const noexcept -> size_t |
| Get number of active sessions. | |
| auto | on_data_received (uint64_t session_id, std::vector< uint8_t > data) -> VoidResult |
| Handle incoming data from network. | |
| void | on_connection_closed (uint64_t session_id) |
| Handle connection closed event. | |
| void | register_c_store_handler (service_handler handler) |
| Register C-STORE handler. | |
| void | register_c_find_handler (service_handler handler) |
| Register C-FIND handler. | |
| void | register_c_get_handler (service_handler handler) |
| Register C-GET handler. | |
| void | register_c_move_handler (service_handler handler) |
| Register C-MOVE handler. | |
| void | register_c_echo_handler (service_handler handler) |
| Register C-ECHO handler. | |
| void | set_send_callback (send_callback callback) |
| Set the network send callback. | |
| void | set_association_callback (association_callback callback) |
| Set the association event callback. | |
| void | set_session_event_callback (session_event_callback callback) |
| Set the session event callback. | |
| auto | get_metrics () noexcept -> pipeline_metrics & |
| Get the pipeline metrics. | |
| auto | get_metrics () const noexcept -> const pipeline_metrics & |
| Get the pipeline metrics (const) | |
| auto | get_coordinator () noexcept -> pipeline_coordinator & |
| Get the underlying coordinator. | |
| auto | get_coordinator () const noexcept -> const pipeline_coordinator & |
| Get the underlying coordinator (const) | |
Private Member Functions | |
| auto | get_handler_for_command (dimse_command_type type) -> service_handler |
| Get service handler for command type. | |
| void | on_job_completed (const job_context &ctx, bool success) |
| Handle job completion. | |
| void | on_backpressure (pipeline_stage stage, size_t queue_depth) |
| Handle backpressure. | |
Private Attributes | |
| std::unique_ptr< pipeline_coordinator > | coordinator_ |
| Pipeline coordinator. | |
| std::unordered_map< uint64_t, session_context > | sessions_ |
| Session registry. | |
| std::mutex | sessions_mutex_ |
| service_handler | c_store_handler_ |
| Service handlers. | |
| service_handler | c_find_handler_ |
| service_handler | c_get_handler_ |
| service_handler | c_move_handler_ |
| service_handler | c_echo_handler_ |
| std::mutex | handlers_mutex_ |
| send_callback | send_callback_ |
| Callbacks. | |
| association_callback | association_callback_ |
| session_event_callback | session_event_callback_ |
| std::mutex | callbacks_mutex_ |
Adapter for integrating pipeline with DICOM server components.
The adapter provides:
Definition at line 100 of file pipeline_adapter.h.
Type for association event callback.
Definition at line 107 of file pipeline_adapter.h.
Type for network send callback.
Definition at line 103 of file pipeline_adapter.h.
| using kcenon::pacs::network::pipeline::pipeline_adapter::service_handler = storage_query_exec_job::service_handler |
Service handler type.
Definition at line 219 of file pipeline_adapter.h.
Type for session event callback.
Definition at line 112 of file pipeline_adapter.h.
| kcenon::pacs::network::pipeline::pipeline_adapter::pipeline_adapter | ( | ) |
Construct adapter with default configuration.
Definition at line 24 of file pipeline_adapter.cpp.
|
explicit |
Construct adapter with custom configuration.
| config | Pipeline configuration |
Definition at line 28 of file pipeline_adapter.cpp.
References coordinator_, on_backpressure(), on_job_completed(), and kcenon::pacs::network::pipeline::success.

| kcenon::pacs::network::pipeline::pipeline_adapter::~pipeline_adapter | ( | ) |
Destructor - ensures graceful shutdown.
Definition at line 45 of file pipeline_adapter.cpp.
References is_running(), and stop().

|
delete |
|
delete |
|
nodiscardnoexcept |
Get number of active sessions.
Definition at line 120 of file pipeline_adapter.cpp.
References sessions_, and sessions_mutex_.
|
nodiscardnoexcept |
Get the underlying coordinator (const)
Definition at line 242 of file pipeline_adapter.cpp.
References coordinator_.
|
nodiscardnoexcept |
Get the underlying coordinator.
Definition at line 238 of file pipeline_adapter.cpp.
References coordinator_.
|
nodiscardprivate |
Get service handler for command type.
Definition at line 251 of file pipeline_adapter.cpp.
References kcenon::pacs::network::pipeline::c_echo_rq, kcenon::pacs::network::pipeline::c_find_rq, kcenon::pacs::network::pipeline::c_get_rq, kcenon::pacs::network::pipeline::c_move_rq, and kcenon::pacs::network::pipeline::c_store_rq.
|
nodiscardnoexcept |
Get the pipeline metrics (const)
Definition at line 234 of file pipeline_adapter.cpp.
References coordinator_.
|
nodiscardnoexcept |
Get the pipeline metrics.
Definition at line 230 of file pipeline_adapter.cpp.
References coordinator_.
|
nodiscard |
Get session context.
| session_id | Session identifier |
Definition at line 110 of file pipeline_adapter.cpp.
|
nodiscardnoexcept |
Check if the adapter is running.
Definition at line 63 of file pipeline_adapter.cpp.
References coordinator_.
Referenced by ~pipeline_adapter().

|
private |
Handle backpressure.
Definition at line 295 of file pipeline_adapter.cpp.
References callbacks_mutex_, kcenon::pacs::network::pipeline::get_stage_name(), and session_event_callback_.
Referenced by pipeline_adapter().


| void kcenon::pacs::network::pipeline::pipeline_adapter::on_connection_closed | ( | uint64_t | session_id | ) |
Handle connection closed event.
| session_id | Session that was closed |
Definition at line 173 of file pipeline_adapter.cpp.
References unregister_session().

|
nodiscard |
Handle incoming data from network.
Submits received PDU data to the pipeline for processing.
| session_id | Session that received the data |
| data | Raw PDU bytes |
Definition at line 129 of file pipeline_adapter.cpp.
References kcenon::pacs::network::pipeline::network_receive, and kcenon::pacs::pacs_void_error().

|
private |
Handle job completion.
Definition at line 276 of file pipeline_adapter.cpp.
References kcenon::pacs::network::pipeline::job_context::category, coordinator_, kcenon::pacs::network::pipeline::job_context::enqueue_time_ns, kcenon::pacs::network::pipeline::network_send, kcenon::pacs::network::pipeline::job_context::stage, and kcenon::pacs::network::pipeline::success.
Referenced by pipeline_adapter().

|
delete |
|
delete |
| void kcenon::pacs::network::pipeline::pipeline_adapter::register_c_echo_handler | ( | service_handler | handler | ) |
Register C-ECHO handler.
| handler | Handler function |
Definition at line 201 of file pipeline_adapter.cpp.
References c_echo_handler_, and handlers_mutex_.
| void kcenon::pacs::network::pipeline::pipeline_adapter::register_c_find_handler | ( | service_handler | handler | ) |
Register C-FIND handler.
| handler | Handler function |
Definition at line 186 of file pipeline_adapter.cpp.
References c_find_handler_, and handlers_mutex_.
| void kcenon::pacs::network::pipeline::pipeline_adapter::register_c_get_handler | ( | service_handler | handler | ) |
Register C-GET handler.
| handler | Handler function |
Definition at line 191 of file pipeline_adapter.cpp.
References c_get_handler_, and handlers_mutex_.
| void kcenon::pacs::network::pipeline::pipeline_adapter::register_c_move_handler | ( | service_handler | handler | ) |
Register C-MOVE handler.
| handler | Handler function |
Definition at line 196 of file pipeline_adapter.cpp.
References c_move_handler_, and handlers_mutex_.
| void kcenon::pacs::network::pipeline::pipeline_adapter::register_c_store_handler | ( | service_handler | handler | ) |
Register C-STORE handler.
| handler | Handler function |
Definition at line 181 of file pipeline_adapter.cpp.
References c_store_handler_, and handlers_mutex_.
| void kcenon::pacs::network::pipeline::pipeline_adapter::register_session | ( | uint64_t | session_id, |
| session_context | context ) |
Register a new session.
| session_id | Unique session identifier |
| context | Session context information |
Definition at line 71 of file pipeline_adapter.cpp.
References callbacks_mutex_, coordinator_, kcenon::pacs::network::pipeline::session_context::created_at, kcenon::pacs::network::pipeline::session_context::last_activity, session_event_callback_, kcenon::pacs::network::pipeline::session_context::session_id, sessions_, and sessions_mutex_.
| void kcenon::pacs::network::pipeline::pipeline_adapter::set_association_callback | ( | association_callback | callback | ) |
Set the association event callback.
| callback | Function to handle association PDUs |
Definition at line 215 of file pipeline_adapter.cpp.
References association_callback_, and callbacks_mutex_.
| void kcenon::pacs::network::pipeline::pipeline_adapter::set_send_callback | ( | send_callback | callback | ) |
Set the network send callback.
| callback | Function to send data over network |
Definition at line 210 of file pipeline_adapter.cpp.
References callbacks_mutex_, and send_callback_.
| void kcenon::pacs::network::pipeline::pipeline_adapter::set_session_event_callback | ( | session_event_callback | callback | ) |
Set the session event callback.
| callback | Function to handle session events |
Definition at line 220 of file pipeline_adapter.cpp.
References callbacks_mutex_, and session_event_callback_.
|
nodiscard |
Start the pipeline adapter.
Definition at line 55 of file pipeline_adapter.cpp.
|
nodiscard |
Stop the pipeline adapter.
Definition at line 59 of file pipeline_adapter.cpp.
Referenced by ~pipeline_adapter().

| void kcenon::pacs::network::pipeline::pipeline_adapter::unregister_session | ( | uint64_t | session_id | ) |
Unregister a session.
| session_id | Session to unregister |
Definition at line 93 of file pipeline_adapter.cpp.
References callbacks_mutex_, coordinator_, session_event_callback_, sessions_, and sessions_mutex_.
Referenced by on_connection_closed().

|
private |
Definition at line 316 of file pipeline_adapter.h.
Referenced by set_association_callback().
|
private |
Definition at line 311 of file pipeline_adapter.h.
Referenced by register_c_echo_handler().
|
private |
Definition at line 308 of file pipeline_adapter.h.
Referenced by register_c_find_handler().
|
private |
Definition at line 309 of file pipeline_adapter.h.
Referenced by register_c_get_handler().
|
private |
Definition at line 310 of file pipeline_adapter.h.
Referenced by register_c_move_handler().
|
private |
Service handlers.
Definition at line 307 of file pipeline_adapter.h.
Referenced by register_c_store_handler().
|
mutableprivate |
Definition at line 318 of file pipeline_adapter.h.
Referenced by on_backpressure(), register_session(), set_association_callback(), set_send_callback(), set_session_event_callback(), and unregister_session().
|
private |
Pipeline coordinator.
Definition at line 300 of file pipeline_adapter.h.
Referenced by get_coordinator(), get_coordinator(), get_metrics(), get_metrics(), is_running(), on_job_completed(), pipeline_adapter(), register_session(), and unregister_session().
|
mutableprivate |
Definition at line 312 of file pipeline_adapter.h.
Referenced by register_c_echo_handler(), register_c_find_handler(), register_c_get_handler(), register_c_move_handler(), and register_c_store_handler().
|
private |
Callbacks.
Definition at line 315 of file pipeline_adapter.h.
Referenced by set_send_callback().
|
private |
Definition at line 317 of file pipeline_adapter.h.
Referenced by on_backpressure(), register_session(), set_session_event_callback(), and unregister_session().
|
private |
Session registry.
Definition at line 303 of file pipeline_adapter.h.
Referenced by get_active_session_count(), register_session(), and unregister_session().
|
mutableprivate |
Definition at line 304 of file pipeline_adapter.h.
Referenced by get_active_session_count(), register_session(), and unregister_session().