|
PACS System 0.1.0
PACS DICOM system library
|
#include <job_manager.h>

Classes | |
| struct | impl |
Public Member Functions | |
| job_manager (std::shared_ptr< storage::job_repository > repo, std::shared_ptr< remote_node_manager > node_manager, std::shared_ptr< di::ILogger > logger=nullptr) | |
| Construct a job manager with default configuration. | |
| job_manager (const job_manager_config &config, std::shared_ptr< storage::job_repository > repo, std::shared_ptr< remote_node_manager > node_manager, std::shared_ptr< di::ILogger > logger=nullptr) | |
| Construct a job manager with custom configuration. | |
| ~job_manager () | |
| Destructor - stops workers if running. | |
| job_manager (const job_manager &)=delete | |
| auto | operator= (const job_manager &) -> job_manager &=delete |
| job_manager (job_manager &&)=delete | |
| auto | operator= (job_manager &&) -> job_manager &=delete |
| auto | create_retrieve_job (std::string_view source_node_id, std::string_view study_uid, std::optional< std::string_view > series_uid=std::nullopt, job_priority priority=job_priority::normal) -> std::string |
| Create a retrieve job (C-MOVE/C-GET) | |
| auto | create_store_job (std::string_view destination_node_id, const std::vector< std::string > &instance_uids, job_priority priority=job_priority::normal) -> std::string |
| Create a store job (C-STORE) | |
| auto | create_query_job (std::string_view node_id, std::string_view query_level, const std::unordered_map< std::string, std::string > &query_keys, job_priority priority=job_priority::normal) -> std::string |
| Create a query job (C-FIND) | |
| auto | create_sync_job (std::string_view source_node_id, std::optional< std::string_view > patient_id=std::nullopt, job_priority priority=job_priority::low) -> std::string |
| Create a sync job. | |
| auto | create_prefetch_job (std::string_view source_node_id, std::string_view patient_id, job_priority priority=job_priority::low) -> std::string |
| Create a prefetch job. | |
| auto | start_job (std::string_view job_id) -> kcenon::pacs::VoidResult |
| Start a pending job. | |
| auto | pause_job (std::string_view job_id) -> kcenon::pacs::VoidResult |
| Pause a running or queued job. | |
| auto | resume_job (std::string_view job_id) -> kcenon::pacs::VoidResult |
| Resume a paused job. | |
| auto | cancel_job (std::string_view job_id) -> kcenon::pacs::VoidResult |
| Cancel a job. | |
| auto | retry_job (std::string_view job_id) -> kcenon::pacs::VoidResult |
| Retry a failed job. | |
| auto | delete_job (std::string_view job_id) -> kcenon::pacs::VoidResult |
| Delete a job. | |
| auto | get_job (std::string_view job_id) const -> std::optional< job_record > |
| Get a job by ID. | |
| auto | list_jobs (std::optional< job_status > status=std::nullopt, std::optional< job_type > type=std::nullopt, size_t limit=100, size_t offset=0) const -> std::vector< job_record > |
| List jobs with optional filters. | |
| auto | list_jobs_by_node (std::string_view node_id) const -> std::vector< job_record > |
| List jobs by node ID. | |
| auto | get_progress (std::string_view job_id) const -> job_progress |
| Get current progress for a job. | |
| void | set_progress_callback (job_progress_callback callback) |
| Set the progress callback. | |
| void | set_completion_callback (job_completion_callback callback) |
| Set the completion callback. | |
| auto | wait_for_completion (std::string_view job_id) -> std::future< job_record > |
| Wait for a job to complete. | |
| void | start_workers () |
| Start the worker threads. | |
| void | stop_workers () |
| Stop the worker threads. | |
| auto | is_running () const noexcept -> bool |
| Check if workers are running. | |
| auto | active_jobs () const -> size_t |
| Get number of active (running) jobs. | |
| auto | pending_jobs () const -> size_t |
| Get number of pending jobs. | |
| auto | completed_jobs_today () const -> size_t |
| Get number of jobs completed today. | |
| auto | failed_jobs_today () const -> size_t |
| Get number of jobs failed today. | |
| auto | config () const noexcept -> const job_manager_config & |
| Get current configuration. | |
Private Attributes | |
| std::unique_ptr< impl > | impl_ |
Definition at line 93 of file job_manager.h.
|
explicit |
Construct a job manager with default configuration.
| repo | Job repository for persistence (required) |
| node_manager | Remote node manager for DICOM operations (required) |
| logger | Logger instance (optional, defaults to NullLogger) |
Definition at line 1129 of file job_manager.cpp.
|
explicit |
Construct a job manager with custom configuration.
| config | Manager configuration |
| repo | Job repository for persistence (required) |
| node_manager | Remote node manager for DICOM operations (required) |
| logger | Logger instance (optional, defaults to NullLogger) |
Definition at line 1136 of file job_manager.cpp.
References config(), kcenon::pacs::client::job_manager::impl::config, impl_, kcenon::pacs::client::job_manager::impl::load_pending_jobs_from_repo(), kcenon::pacs::client::job_manager::impl::logger, kcenon::pacs::client::job_manager::impl::node_manager, kcenon::pacs::di::null_logger(), and kcenon::pacs::client::job_manager::impl::repo.

| kcenon::pacs::client::job_manager::~job_manager | ( | ) |
Destructor - stops workers if running.
Definition at line 1152 of file job_manager.cpp.
References stop_workers().

|
delete |
|
delete |
|
nodiscard |
Get number of active (running) jobs.
Definition at line 1622 of file job_manager.cpp.
References kcenon::pacs::client::job_manager::impl::active_job_ids, kcenon::pacs::client::job_manager::impl::active_mutex, and impl_.
|
nodiscard |
Cancel a job.
Cancels a running, queued, or pending job.
| job_id | The job ID to cancel |
Definition at line 1353 of file job_manager.cpp.
References kcenon::pacs::client::job_manager::impl::active_job_ids, kcenon::pacs::client::job_manager::impl::active_mutex, kcenon::pacs::client::cancelled, kcenon::pacs::client::job_manager::impl::cancelled_job_ids, kcenon::pacs::client::job_manager::impl::cancelled_mutex, kcenon::pacs::client::job_manager::impl::get_job_from_cache(), impl_, kcenon::pacs::client::job_manager::impl::logger, kcenon::pacs::client::job_manager::impl::notify_completion(), kcenon::pacs::pacs_void_error(), kcenon::pacs::client::to_string(), and kcenon::pacs::client::job_manager::impl::update_job_status().
Referenced by delete_job().


|
nodiscard |
Get number of jobs completed today.
Definition at line 1632 of file job_manager.cpp.
References impl_, and kcenon::pacs::client::job_manager::impl::repo.
|
nodiscardnoexcept |
Get current configuration.
Definition at line 1666 of file job_manager.cpp.
References kcenon::pacs::client::job_manager::impl::config, and impl_.
Referenced by job_manager().

|
nodiscard |
Create a prefetch job.
Creates a job to prefetch prior studies for a patient.
| source_node_id | ID of the source remote node |
| patient_id | Patient ID to prefetch studies for |
| priority | Job priority (default: low for background prefetch) |
Definition at line 1252 of file job_manager.cpp.
References impl_, kcenon::pacs::client::job_manager::impl::logger, kcenon::pacs::client::pending, kcenon::pacs::client::prefetch, and kcenon::pacs::client::job_manager::impl::save_job().

|
nodiscard |
Create a query job (C-FIND)
Creates a job to query a remote node.
| node_id | ID of the remote node to query |
| query_level | Query retrieve level (PATIENT, STUDY, SERIES, IMAGE) |
| query_keys | Query keys as key-value pairs |
| priority | Job priority (default: normal) |
Definition at line 1206 of file job_manager.cpp.
References impl_, kcenon::pacs::client::job_manager::impl::logger, kcenon::pacs::client::pending, kcenon::pacs::client::query, and kcenon::pacs::client::job_manager::impl::save_job().

|
nodiscard |
Create a retrieve job (C-MOVE/C-GET)
Creates a job to retrieve DICOM objects from a remote node.
| source_node_id | ID of the source remote node |
| study_uid | Study Instance UID to retrieve |
| series_uid | Optional Series Instance UID (retrieve all if not specified) |
| priority | Job priority (default: normal) |
Definition at line 1160 of file job_manager.cpp.
References impl_, kcenon::pacs::client::job_manager::impl::logger, kcenon::pacs::client::pending, kcenon::pacs::client::retrieve, and kcenon::pacs::client::job_manager::impl::save_job().

|
nodiscard |
Create a store job (C-STORE)
Creates a job to store DICOM objects to a remote node.
| destination_node_id | ID of the destination remote node |
| instance_uids | SOP Instance UIDs to store |
| priority | Job priority (default: normal) |
Definition at line 1184 of file job_manager.cpp.
References impl_, kcenon::pacs::client::job_manager::impl::logger, kcenon::pacs::client::pending, kcenon::pacs::client::job_manager::impl::save_job(), and kcenon::pacs::client::store.

|
nodiscard |
Create a sync job.
Creates a job to synchronize data with a remote node.
| source_node_id | ID of the source remote node |
| patient_id | Optional patient ID filter |
| priority | Job priority (default: low for background sync) |
Definition at line 1230 of file job_manager.cpp.
References impl_, kcenon::pacs::client::job_manager::impl::logger, kcenon::pacs::client::pending, kcenon::pacs::client::job_manager::impl::save_job(), and kcenon::pacs::client::sync.

|
nodiscard |
Delete a job.
Removes a job from the system. Running jobs are cancelled first.
| job_id | The job ID to delete |
Definition at line 1426 of file job_manager.cpp.
References kcenon::pacs::client::job_manager::impl::cache_mutex, cancel_job(), kcenon::pacs::client::job_manager::impl::get_job_from_cache(), impl_, kcenon::pacs::client::job_manager::impl::job_cache, kcenon::pacs::client::job_manager::impl::logger, kcenon::pacs::pacs_void_error(), and kcenon::pacs::client::job_manager::impl::repo.

|
nodiscard |
Get number of jobs failed today.
Definition at line 1647 of file job_manager.cpp.
References impl_, and kcenon::pacs::client::job_manager::impl::repo.
|
nodiscard |
Get a job by ID.
| job_id | The job ID to retrieve |
Definition at line 1461 of file job_manager.cpp.
References kcenon::pacs::client::job_manager::impl::get_job_from_cache(), and impl_.

|
nodiscard |
Get current progress for a job.
| job_id | The job ID |
Definition at line 1533 of file job_manager.cpp.
References kcenon::pacs::client::job_manager::impl::get_job_from_cache(), and impl_.

|
nodiscardnoexcept |
Check if workers are running.
Definition at line 1614 of file job_manager.cpp.
References impl_, and kcenon::pacs::client::job_manager::impl::running.
|
nodiscard |
List jobs with optional filters.
| status | Optional status filter |
| type | Optional type filter |
| limit | Maximum results (default: 100) |
| offset | Result offset for pagination |
Definition at line 1465 of file job_manager.cpp.
References kcenon::pacs::client::job_manager::impl::cache_mutex, impl_, kcenon::pacs::client::job_manager::impl::job_cache, kcenon::pacs::client::job_manager::impl::repo, and kcenon::pacs::storage::job_query_options::status.
|
nodiscard |
List jobs by node ID.
Returns jobs that involve the specified node as source or destination.
| node_id | The node ID to filter by |
Definition at line 1504 of file job_manager.cpp.
References kcenon::pacs::client::job_manager::impl::cache_mutex, impl_, kcenon::pacs::client::job_manager::impl::job_cache, and kcenon::pacs::client::job_manager::impl::repo.
|
delete |
|
delete |
|
nodiscard |
Pause a running or queued job.
| job_id | The job ID to pause |
Definition at line 1305 of file job_manager.cpp.
References kcenon::pacs::client::job_manager::impl::get_job_from_cache(), impl_, kcenon::pacs::client::job_manager::impl::logger, kcenon::pacs::pacs_void_error(), kcenon::pacs::client::paused, kcenon::pacs::client::job_manager::impl::paused_job_ids, kcenon::pacs::client::job_manager::impl::paused_mutex, kcenon::pacs::client::to_string(), and kcenon::pacs::client::job_manager::impl::update_job_status().

|
nodiscard |
Get number of pending jobs.
Definition at line 1627 of file job_manager.cpp.
References impl_, kcenon::pacs::client::job_manager::impl::job_queue, and kcenon::pacs::client::job_manager::impl::queue_mutex.
|
nodiscard |
Resume a paused job.
| job_id | The job ID to resume |
Definition at line 1329 of file job_manager.cpp.
References kcenon::pacs::client::job_manager::impl::get_job_from_cache(), impl_, kcenon::pacs::client::job_manager::impl::logger, kcenon::pacs::pacs_void_error(), kcenon::pacs::client::paused, kcenon::pacs::client::job_manager::impl::paused_job_ids, kcenon::pacs::client::job_manager::impl::paused_mutex, kcenon::pacs::client::queued, kcenon::pacs::client::to_string(), and kcenon::pacs::client::job_manager::impl::update_job_status().

|
nodiscard |
Retry a failed job.
Resets a failed job and queues it for re-execution.
| job_id | The job ID to retry |
Definition at line 1388 of file job_manager.cpp.
References kcenon::pacs::client::job_manager::impl::cache_mutex, kcenon::pacs::client::job_manager::impl::get_job_from_cache(), impl_, kcenon::pacs::client::job_manager::impl::job_cache, kcenon::pacs::client::job_manager::impl::logger, kcenon::pacs::pacs_void_error(), kcenon::pacs::client::pending, kcenon::pacs::client::job_manager::impl::repo, and kcenon::pacs::client::to_string().

| void kcenon::pacs::client::job_manager::set_completion_callback | ( | job_completion_callback | callback | ) |
Set the completion callback.
The callback is invoked when a job completes (success, failure, or cancel). Only one callback can be set; setting a new one replaces the old.
| callback | Function to call on job completion |
Definition at line 1546 of file job_manager.cpp.
References kcenon::pacs::client::job_manager::impl::callbacks_mutex, kcenon::pacs::client::job_manager::impl::completion_callback, and impl_.
| void kcenon::pacs::client::job_manager::set_progress_callback | ( | job_progress_callback | callback | ) |
Set the progress callback.
The callback is invoked whenever job progress is updated. Only one callback can be set; setting a new one replaces the old.
| callback | Function to call on progress updates |
Definition at line 1541 of file job_manager.cpp.
References kcenon::pacs::client::job_manager::impl::callbacks_mutex, impl_, and kcenon::pacs::client::job_manager::impl::progress_callback.
|
nodiscard |
Start a pending job.
Moves a pending job to the execution queue.
| job_id | The job ID to start |
Definition at line 1276 of file job_manager.cpp.
References kcenon::pacs::client::job_manager::impl::cache_mutex, kcenon::pacs::client::job_manager::impl::enqueue_job(), kcenon::pacs::client::job_manager::impl::get_job_from_cache(), impl_, kcenon::pacs::client::job_manager::impl::job_cache, kcenon::pacs::client::job_manager::impl::logger, kcenon::pacs::pacs_void_error(), kcenon::pacs::client::queued, kcenon::pacs::client::to_string(), and kcenon::pacs::client::job_manager::impl::update_job_status().

| void kcenon::pacs::client::job_manager::start_workers | ( | ) |
Start the worker threads.
Starts the configured number of worker threads. Does nothing if already running.
Definition at line 1579 of file job_manager.cpp.
References kcenon::pacs::client::job_manager::impl::config, impl_, kcenon::pacs::client::job_manager::impl::logger, kcenon::pacs::client::job_manager::impl::running, kcenon::pacs::client::job_manager_config::worker_count, kcenon::pacs::client::job_manager::impl::worker_loop(), and kcenon::pacs::client::job_manager::impl::workers.

| void kcenon::pacs::client::job_manager::stop_workers | ( | ) |
Stop the worker threads.
Gracefully stops all worker threads. Running jobs are allowed to complete or timeout.
Definition at line 1596 of file job_manager.cpp.
References impl_, kcenon::pacs::client::job_manager::impl::logger, kcenon::pacs::client::job_manager::impl::queue_cv, kcenon::pacs::client::job_manager::impl::running, and kcenon::pacs::client::job_manager::impl::workers.
Referenced by ~job_manager().

|
nodiscard |
Wait for a job to complete.
Returns a future that completes when the job finishes.
| job_id | The job ID to wait for |
Definition at line 1555 of file job_manager.cpp.
References kcenon::pacs::client::job_manager::impl::completion_promises, kcenon::pacs::client::job_manager::impl::get_job_from_cache(), impl_, and kcenon::pacs::client::job_manager::impl::promises_mutex.

|
private |
Definition at line 441 of file job_manager.h.
Referenced by active_jobs(), cancel_job(), completed_jobs_today(), config(), create_prefetch_job(), create_query_job(), create_retrieve_job(), create_store_job(), create_sync_job(), delete_job(), failed_jobs_today(), get_job(), get_progress(), is_running(), job_manager(), list_jobs(), list_jobs_by_node(), pause_job(), pending_jobs(), resume_job(), retry_job(), set_completion_callback(), set_progress_callback(), start_job(), start_workers(), stop_workers(), and wait_for_completion().