PACS System 0.1.0
PACS DICOM system library
Loading...
Searching...
No Matches
storage_query_exec_job.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
24
25#include <cstdint>
26#include <functional>
27#include <string>
28#include <vector>
29
31
36enum class dimse_status : uint16_t {
37 success = 0x0000,
38 pending = 0xFF00,
39 pending_warning = 0xFF01,
40 cancel = 0xFE00,
49};
50
58
60 uint64_t session_id;
61
63 uint16_t message_id;
64
67
70
72 std::string sop_class_uid;
73
75 std::string sop_instance_uid;
76
78 std::vector<uint8_t> data_set;
79
81 uint16_t remaining_sub_ops{0};
82
84 uint16_t completed_sub_ops{0};
85
87 uint16_t failed_sub_ops{0};
88
90 uint16_t warning_sub_ops{0};
91
93 std::string error_comment;
94};
95
110public:
112 using service_handler = std::function<Result<service_result>(const dimse_request&)>;
113
115 using completion_callback = std::function<void(const service_result& result)>;
116
118 using error_callback = std::function<void(uint64_t session_id,
119 const std::string& error)>;
120
130 service_handler handler,
131 completion_callback on_complete = nullptr,
132 error_callback on_error = nullptr);
133
134 ~storage_query_exec_job() override = default;
135
136 // Non-copyable, movable
141
150 [[nodiscard]] auto execute(pipeline_coordinator& coordinator) -> VoidResult override;
151
155 [[nodiscard]] auto get_context() const noexcept -> const job_context& override;
156 [[nodiscard]] auto get_context() noexcept -> job_context& override;
157
161 [[nodiscard]] auto get_name() const -> std::string override;
162
166 [[nodiscard]] auto get_request() const noexcept -> const dimse_request&;
167
168private:
174
177};
178
179} // namespace kcenon::pacs::network::pipeline
Coordinates the 6-stage DICOM I/O pipeline.
Job for executing storage and query operations.
storage_query_exec_job & operator=(storage_query_exec_job &&)=default
storage_query_exec_job(dimse_request request, service_handler handler, completion_callback on_complete=nullptr, error_callback on_error=nullptr)
Construct an execution job.
auto get_name() const -> std::string override
Get the job name.
static auto get_category_for_command(dimse_command_type type) -> job_category
Determine job category from command type.
std::function< Result< service_result >(const dimse_request &)> service_handler
Service handler function type.
storage_query_exec_job & operator=(const storage_query_exec_job &)=delete
auto get_request() const noexcept -> const dimse_request &
Get the DIMSE request.
storage_query_exec_job(storage_query_exec_job &&)=default
auto get_context() const noexcept -> const job_context &override
Get the job context.
std::function< void(const service_result &result)> completion_callback
Callback type for execution completion.
auto execute(pipeline_coordinator &coordinator) -> VoidResult override
Execute the storage/query operation.
std::function< void(uint64_t session_id, const std::string &error)> error_callback
Callback type for execution errors.
storage_query_exec_job(const storage_query_exec_job &)=delete
DIMSE processing job for Stage 3 of the pipeline.
job_category
Categories for pipeline jobs used in metrics and monitoring.
dimse_status
DICOM DIMSE status codes.
dimse_command_type
DICOM DIMSE command types.
kcenon::pacs::VoidResult VoidResult
VoidResult type alias for operations without return value.
Definition association.h:59
Main coordinator for the 6-stage DICOM I/O pipeline.
Job type definitions for the 6-stage DICOM I/O pipeline.
Result<T> type aliases and helpers for PACS system.
Parsed DIMSE request for service execution.
Context information attached to pipeline jobs for tracking.
uint16_t failed_sub_ops
Number of failed sub-operations.
std::vector< uint8_t > data_set
Response data set (if any)
uint8_t presentation_context_id
Presentation context ID.
uint16_t remaining_sub_ops
Number of remaining sub-operations (for C-GET/C-MOVE)
uint16_t warning_sub_ops
Number of warning sub-operations.
uint64_t session_id
Session ID for routing response.
uint16_t completed_sub_ops
Number of completed sub-operations.
dimse_command_type response_type
Response command type.
std::string sop_class_uid
SOP Class UID (echoed back)
std::string sop_instance_uid
SOP Instance UID (echoed back)