27#include <unordered_map>
63 default:
return "unknown";
114 default:
return "unknown";
172 default:
return "unknown";
293 std::optional<std::chrono::system_clock::time_point>
queued_at;
294 std::optional<std::chrono::system_clock::time_point>
started_at;
311 std::unordered_map<std::string, std::string>
metadata;
365 [[nodiscard]] std::chrono::milliseconds
duration() const noexcept {
367 return std::chrono::milliseconds{0};
369 auto end_time =
completed_at.value_or(std::chrono::system_clock::now());
370 return std::chrono::duration_cast<std::chrono::milliseconds>(
386 const std::string& job_id,
396 const std::string& job_id,
std::function< void( const std::string &job_id, const job_progress &progress)> job_progress_callback
Callback for job progress updates.
std::function< void( const std::string &job_id, const job_record &record)> job_completion_callback
Callback for job completion.
constexpr bool is_terminal_status(job_status status) noexcept
Check if job status is a terminal state.
job_priority job_priority_from_int(int value) noexcept
Parse job_priority from integer.
job_type job_type_from_string(std::string_view str) noexcept
Parse job_type from string.
job_type
Type of job operation.
@ export_
Export to external system.
@ prefetch
Prefetch prior studies.
@ store
C-STORE operation.
@ retrieve
C-MOVE/C-GET operation.
@ import_
Import from external source.
job_status job_status_from_string(std::string_view str) noexcept
Parse job_status from string.
job_priority
Priority level for job execution.
@ low
Background operations.
@ high
User-requested operations.
@ urgent
Critical operations.
@ normal
Standard priority.
constexpr const char * to_string(job_type type) noexcept
Convert job_type to string representation.
job_status
Current status of a job.
@ failed
Job failed with error.
@ cancelled
Job was cancelled by user.
@ running
Job is currently executing.
@ pending
Job created but not yet queued.
@ queued
Job is in the execution queue.
@ completed
Job completed successfully.
job_priority job_priority_from_string(std::string_view str) noexcept
Parse job_priority from string.
Configuration for the job manager.
std::chrono::seconds job_timeout
Job timeout (1 hour default)
size_t max_queue_size
Maximum jobs in queue.
bool auto_retry_failed
Auto-retry failed jobs.
bool persist_jobs
Persist jobs to database.
size_t worker_count
Number of worker threads.
std::chrono::seconds retry_delay
Delay between retries.
std::string local_ae_title
Local AE title for operations.
Progress tracking for a job.
std::chrono::milliseconds elapsed
Time elapsed since start.
size_t failed_items
Failed items.
std::string current_item
Current SOP Instance UID being processed.
size_t skipped_items
Skipped items.
std::string current_item_description
Human-readable description.
bool is_complete() const noexcept
Check if all items have been processed.
size_t bytes_transferred
Total bytes transferred.
size_t completed_items
Successfully completed items.
size_t total_items
Total number of items to process.
float percent_complete
Completion percentage (0-100)
void calculate_percent() noexcept
Calculate completion percentage from item counts.
std::chrono::milliseconds estimated_remaining
Estimated time remaining.
Complete job record with all metadata.
std::optional< std::chrono::system_clock::time_point > completed_at
Completion time.
job_priority priority
Execution priority.
bool can_start() const noexcept
Check if job can be started.
std::string job_id
Unique job identifier (UUID)
std::chrono::system_clock::time_point created_at
Job creation time.
bool can_cancel() const noexcept
Check if job can be cancelled.
std::chrono::milliseconds duration() const noexcept
Get job duration.
std::optional< std::string > study_uid
Study Instance UID.
bool can_retry() const noexcept
Check if job can be retried.
int retry_count
Number of retry attempts.
std::optional< std::chrono::system_clock::time_point > queued_at
Time added to queue.
std::optional< std::string > sop_instance_uid
Single SOP Instance UID.
bool can_pause() const noexcept
Check if job can be paused.
std::unordered_map< std::string, std::string > metadata
Custom key-value pairs.
int max_retries
Maximum retry attempts.
std::string created_by
User ID who created the job.
job_type type
Type of operation.
job_progress progress
Current progress.
job_status status
Current status.
std::optional< std::string > patient_id
Patient ID filter.
std::optional< std::string > series_uid
Series Instance UID.
bool is_finished() const noexcept
Check if job is in a terminal state.
std::string destination_node_id
Destination remote node ID.
std::optional< std::chrono::system_clock::time_point > started_at
Execution start time.
std::string error_message
Error message if failed.
std::string source_node_id
Source remote node ID.
std::string error_details
Detailed error information.
std::vector< std::string > instance_uids
Batch operation UIDs.
int64_t pk
Primary key (0 if not persisted)