|
PACS System 0.1.0
PACS DICOM system library
|
REST API server for PACS administration and monitoring. More...
#include <rest_server.h>

Classes | |
| struct | impl |
| Implementation details for rest_server. More... | |
Public Member Functions | |
| rest_server () | |
| Construct REST server with default configuration. | |
| rest_server (const rest_server_config &config) | |
| Construct REST server with custom configuration. | |
| ~rest_server () | |
| Destructor - stops server if running. | |
| rest_server (const rest_server &)=delete | |
| Non-copyable. | |
| rest_server & | operator= (const rest_server &)=delete |
| rest_server (rest_server &&other) noexcept | |
| Movable. | |
| rest_server & | operator= (rest_server &&other) noexcept |
| const rest_server_config & | config () const noexcept |
| Get current configuration. | |
| void | set_config (const rest_server_config &config) |
| Update configuration (requires restart to apply) | |
| void | set_health_checker (std::shared_ptr< monitoring::health_checker > checker) |
| Set health checker for /api/v1/system/status endpoint. | |
| void | set_metrics_provider (std::shared_ptr< monitoring::pacs_metrics > metrics) |
| Set metrics provider for /api/v1/system/metrics endpoint. | |
| void | set_access_control_manager (std::shared_ptr< security::access_control_manager > manager) |
| Set access control manager for security. | |
| void | set_database (std::shared_ptr< storage::index_database > database) |
| Set index database for patient/study/series endpoints. | |
| void | set_file_storage (std::shared_ptr< storage::file_storage > storage) |
| Set file storage for DICOM instance persistence (STOW-RS) | |
| void | set_node_manager (std::shared_ptr< client::remote_node_manager > manager) |
| Set remote node manager for remote PACS node management. | |
| void | set_job_manager (std::shared_ptr< client::job_manager > manager) |
| Set job manager for async DICOM operations. | |
| void | set_routing_manager (std::shared_ptr< client::routing_manager > manager) |
| Set routing manager for auto-forwarding rules. | |
| void | set_dicom_server (std::shared_ptr< network::dicom_server > server) |
| Set DICOM server for live association management. | |
| void | set_oauth2_middleware (std::shared_ptr< auth::oauth2_middleware > middleware) |
| Set OAuth 2.0 middleware for DICOMweb endpoint authorization. | |
| void | start () |
| Start the server (blocking) | |
| void | start_async () |
| Start the server (non-blocking) | |
| void | stop () |
| Stop the server. | |
| bool | is_running () const noexcept |
| Check if server is currently running. | |
| void | wait () |
| Wait for server to stop. | |
| std::uint16_t | port () const noexcept |
| Get the actual port the server is listening on. | |
Private Attributes | |
| std::unique_ptr< impl > | impl_ |
REST API server for PACS administration and monitoring.
The rest_server class provides a REST API for:
Definition at line 85 of file rest_server.h.
| kcenon::pacs::web::rest_server::rest_server | ( | ) |
Construct REST server with default configuration.
Definition at line 120 of file rest_server.cpp.
|
explicit |
Construct REST server with custom configuration.
| config | Server configuration |
Definition at line 122 of file rest_server.cpp.
| kcenon::pacs::web::rest_server::~rest_server | ( | ) |
Destructor - stops server if running.
Definition at line 125 of file rest_server.cpp.
References stop().

|
delete |
Non-copyable.
|
defaultnoexcept |
Movable.
|
nodiscardnoexcept |
Get current configuration.
Definition at line 130 of file rest_server.cpp.
References kcenon::pacs::web::rest_server::impl::config, and impl_.
Referenced by set_config().

|
nodiscardnoexcept |
Check if server is currently running.
Definition at line 317 of file rest_server.cpp.
References impl_, and kcenon::pacs::web::rest_server::impl::running.
|
delete |
|
defaultnoexcept |
|
nodiscardnoexcept |
Get the actual port the server is listening on.
Definition at line 325 of file rest_server.cpp.
References kcenon::pacs::web::rest_server::impl::config, impl_, kcenon::pacs::web::rest_server_config::port, and kcenon::pacs::web::rest_server::impl::running.
| void kcenon::pacs::web::rest_server::set_access_control_manager | ( | std::shared_ptr< security::access_control_manager > | manager | ) |
Set access control manager for security.
| manager | Access control manager instance |
Definition at line 152 of file rest_server.cpp.
References kcenon::pacs::web::rest_server::impl::context, impl_, and kcenon::pacs::web::rest_server::impl::mutex.
| void kcenon::pacs::web::rest_server::set_config | ( | const rest_server_config & | config | ) |
Update configuration (requires restart to apply)
| config | New configuration |
Definition at line 134 of file rest_server.cpp.
References config(), kcenon::pacs::web::rest_server::impl::config, kcenon::pacs::web::rest_server::impl::context, impl_, and kcenon::pacs::web::rest_server::impl::mutex.

| void kcenon::pacs::web::rest_server::set_database | ( | std::shared_ptr< storage::index_database > | database | ) |
Set index database for patient/study/series endpoints.
| database | Index database instance |
Definition at line 158 of file rest_server.cpp.
References kcenon::pacs::web::rest_server::impl::context, impl_, and kcenon::pacs::web::rest_server::impl::mutex.
| void kcenon::pacs::web::rest_server::set_dicom_server | ( | std::shared_ptr< network::dicom_server > | server | ) |
Set DICOM server for live association management.
| server | DICOM server instance |
Definition at line 188 of file rest_server.cpp.
References kcenon::pacs::web::rest_server::impl::context, impl_, and kcenon::pacs::web::rest_server::impl::mutex.
| void kcenon::pacs::web::rest_server::set_file_storage | ( | std::shared_ptr< storage::file_storage > | storage | ) |
Set file storage for DICOM instance persistence (STOW-RS)
| storage | File storage instance |
Definition at line 164 of file rest_server.cpp.
References kcenon::pacs::web::rest_server::impl::context, impl_, and kcenon::pacs::web::rest_server::impl::mutex.
| void kcenon::pacs::web::rest_server::set_health_checker | ( | std::shared_ptr< monitoring::health_checker > | checker | ) |
Set health checker for /api/v1/system/status endpoint.
| checker | Health checker instance |
Definition at line 140 of file rest_server.cpp.
References kcenon::pacs::web::rest_server::impl::context, impl_, and kcenon::pacs::web::rest_server::impl::mutex.
| void kcenon::pacs::web::rest_server::set_job_manager | ( | std::shared_ptr< client::job_manager > | manager | ) |
Set job manager for async DICOM operations.
| manager | Job manager instance |
Definition at line 176 of file rest_server.cpp.
References kcenon::pacs::web::rest_server::impl::context, impl_, and kcenon::pacs::web::rest_server::impl::mutex.
| void kcenon::pacs::web::rest_server::set_metrics_provider | ( | std::shared_ptr< monitoring::pacs_metrics > | metrics | ) |
Set metrics provider for /api/v1/system/metrics endpoint.
| metrics | Metrics instance |
Set metrics provider for /api/v1/system/metrics endpoint
| metrics | Metrics instance |
Definition at line 146 of file rest_server.cpp.
References kcenon::pacs::web::rest_server::impl::context, impl_, and kcenon::pacs::web::rest_server::impl::mutex.
| void kcenon::pacs::web::rest_server::set_node_manager | ( | std::shared_ptr< client::remote_node_manager > | manager | ) |
Set remote node manager for remote PACS node management.
| manager | Remote node manager instance |
Definition at line 170 of file rest_server.cpp.
References kcenon::pacs::web::rest_server::impl::context, impl_, and kcenon::pacs::web::rest_server::impl::mutex.
| void kcenon::pacs::web::rest_server::set_oauth2_middleware | ( | std::shared_ptr< auth::oauth2_middleware > | middleware | ) |
Set OAuth 2.0 middleware for DICOMweb endpoint authorization.
| middleware | OAuth 2.0 middleware instance |
Definition at line 194 of file rest_server.cpp.
References kcenon::pacs::web::rest_server::impl::context, impl_, and kcenon::pacs::web::rest_server::impl::mutex.
| void kcenon::pacs::web::rest_server::set_routing_manager | ( | std::shared_ptr< client::routing_manager > | manager | ) |
Set routing manager for auto-forwarding rules.
| manager | Routing manager instance |
Definition at line 182 of file rest_server.cpp.
References kcenon::pacs::web::rest_server::impl::context, impl_, and kcenon::pacs::web::rest_server::impl::mutex.
| void kcenon::pacs::web::rest_server::start | ( | ) |
Start the server (blocking)
This method blocks until stop() is called from another thread.
Definition at line 200 of file rest_server.cpp.
References kcenon::pacs::web::rest_server::impl::app, kcenon::pacs::web::rest_server_config::bind_address, kcenon::pacs::web::rest_server_config::concurrency, kcenon::pacs::web::rest_server::impl::config, kcenon::pacs::web::rest_server::impl::context, kcenon::pacs::web::rest_server_config::cors_allowed_origins, kcenon::pacs::web::rest_server_config::enable_cors, impl_, kcenon::pacs::web::rest_server_config::port, kcenon::pacs::web::endpoints::register_system_endpoints_impl(), and kcenon::pacs::web::rest_server::impl::running.

| void kcenon::pacs::web::rest_server::start_async | ( | ) |
Start the server (non-blocking)
Starts the server in a background thread and returns immediately.
Definition at line 238 of file rest_server.cpp.
References kcenon::pacs::web::rest_server::impl::app, kcenon::pacs::web::rest_server_config::bind_address, kcenon::pacs::web::rest_server_config::concurrency, kcenon::pacs::web::rest_server::impl::config, kcenon::pacs::web::rest_server::impl::context, kcenon::pacs::web::rest_server_config::cors_allowed_origins, kcenon::pacs::web::rest_server_config::enable_cors, impl_, kcenon::pacs::web::rest_server_config::port, kcenon::pacs::web::endpoints::register_annotation_endpoints_impl(), kcenon::pacs::web::endpoints::register_association_endpoints_impl(), kcenon::pacs::web::endpoints::register_audit_endpoints_impl(), kcenon::pacs::web::endpoints::register_dicomweb_endpoints_impl(), kcenon::pacs::web::endpoints::register_jobs_endpoints_impl(), kcenon::pacs::web::endpoints::register_key_image_endpoints_impl(), kcenon::pacs::web::endpoints::register_measurement_endpoints_impl(), kcenon::pacs::web::endpoints::register_metadata_endpoints_impl(), kcenon::pacs::web::endpoints::register_patient_endpoints_impl(), kcenon::pacs::web::endpoints::register_remote_nodes_endpoints_impl(), kcenon::pacs::web::endpoints::register_routing_endpoints_impl(), kcenon::pacs::web::endpoints::register_security_endpoints_impl(), kcenon::pacs::web::endpoints::register_series_endpoints_impl(), kcenon::pacs::web::endpoints::register_storage_commitment_endpoints_impl(), kcenon::pacs::web::endpoints::register_study_endpoints_impl(), kcenon::pacs::web::endpoints::register_system_endpoints_impl(), kcenon::pacs::web::endpoints::register_thumbnail_endpoints_impl(), kcenon::pacs::web::endpoints::register_viewer_state_endpoints_impl(), kcenon::pacs::web::endpoints::register_wado_uri_endpoints_impl(), kcenon::pacs::web::endpoints::register_worklist_endpoints_impl(), kcenon::pacs::web::rest_server::impl::running, and kcenon::pacs::web::rest_server::impl::server_thread.

| void kcenon::pacs::web::rest_server::stop | ( | ) |
Stop the server.
Gracefully shuts down the server. Safe to call multiple times.
Definition at line 301 of file rest_server.cpp.
References kcenon::pacs::web::rest_server::impl::app, impl_, kcenon::pacs::web::rest_server::impl::running, and kcenon::pacs::web::rest_server::impl::server_thread.
Referenced by ~rest_server().

| void kcenon::pacs::web::rest_server::wait | ( | ) |
Wait for server to stop.
Blocks until the server has completely stopped. Only valid after start_async() was called.
Definition at line 319 of file rest_server.cpp.
References impl_, and kcenon::pacs::web::rest_server::impl::server_thread.
|
private |
Definition at line 244 of file rest_server.h.
Referenced by config(), is_running(), port(), set_access_control_manager(), set_config(), set_database(), set_dicom_server(), set_file_storage(), set_health_checker(), set_job_manager(), set_metrics_provider(), set_node_manager(), set_oauth2_middleware(), set_routing_manager(), start(), start_async(), stop(), and wait().