18#ifndef PACS_SERVICES_SCP_SERVICE_HPP
19#define PACS_SERVICES_SCP_SERVICE_HPP
93 [[nodiscard]]
const std::shared_ptr<di::ILogger>&
logger() const noexcept {
132 [[nodiscard]]
virtual std::string_view
service_name() const noexcept = 0;
142 for (
const auto&
uid : classes) {
143 if (
uid == sop_class_uid) {
DICOM Association management per PS3.8.
virtual ~scp_service()=default
virtual network::Result< std::monostate > handle_message(network::association &assoc, uint8_t context_id, const network::dimse::dimse_message &request)=0
Handle an incoming DIMSE message.
scp_service(const scp_service &)=delete
scp_service(scp_service &&)=default
const std::shared_ptr< di::ILogger > & logger() const noexcept
Get the current logger instance.
void set_logger(std::shared_ptr< di::ILogger > logger)
Set the logger instance.
scp_service & operator=(scp_service &&)=default
bool supports_sop_class(std::string_view sop_class_uid) const
Check if this service supports a specific SOP Class.
std::shared_ptr< di::ILogger > logger_
Logger instance for service logging.
scp_service(std::shared_ptr< di::ILogger > logger=nullptr)
Construct SCP service with optional logger.
scp_service & operator=(const scp_service &)=delete
virtual std::string_view service_name() const noexcept=0
Get the service name for logging/debugging.
virtual std::vector< std::string > supported_sop_classes() const =0
Get the list of SOP Class UIDs supported by this service.
DIMSE message encoding and decoding.
Logger interface for dependency injection.
std::shared_ptr< ILogger > null_logger()
Get a shared null logger instance.
std::shared_ptr< scp_service > scp_service_ptr
Shared pointer type for SCP services.