PACS System 0.1.0
PACS DICOM system library
Loading...
Searching...
No Matches
kcenon::pacs::services::scp_service Class Referenceabstract

#include <scp_service.h>

Inheritance diagram for kcenon::pacs::services::scp_service:
Inheritance graph
Collaboration diagram for kcenon::pacs::services::scp_service:
Collaboration graph

Public Member Functions

 scp_service (std::shared_ptr< di::ILogger > logger=nullptr)
 Construct SCP service with optional logger.
 
virtual ~scp_service ()=default
 
 scp_service (const scp_service &)=delete
 
scp_serviceoperator= (const scp_service &)=delete
 
 scp_service (scp_service &&)=default
 
scp_serviceoperator= (scp_service &&)=default
 
void set_logger (std::shared_ptr< di::ILogger > logger)
 Set the logger instance.
 
const std::shared_ptr< di::ILogger > & logger () const noexcept
 Get the current logger instance.
 
virtual std::vector< std::string > supported_sop_classes () const =0
 Get the list of SOP Class UIDs supported by this service.
 
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.
 
virtual std::string_view service_name () const noexcept=0
 Get the service name for logging/debugging.
 
bool supports_sop_class (std::string_view sop_class_uid) const
 Check if this service supports a specific SOP Class.
 

Protected Attributes

std::shared_ptr< di::ILoggerlogger_
 Logger instance for service logging.
 

Detailed Description

Definition at line 53 of file scp_service.h.

Constructor & Destructor Documentation

◆ scp_service() [1/3]

kcenon::pacs::services::scp_service::scp_service ( std::shared_ptr< di::ILogger > logger = nullptr)
inlineexplicit

Construct SCP service with optional logger.

Parameters
loggerLogger instance for service logging (nullptr uses null_logger)

Definition at line 64 of file scp_service.h.

65 : logger_(logger ? std::move(logger) : di::null_logger()) {}
const std::shared_ptr< di::ILogger > & logger() const noexcept
Get the current logger instance.
Definition scp_service.h:93
std::shared_ptr< di::ILogger > logger_
Logger instance for service logging.
std::shared_ptr< ILogger > null_logger()
Get a shared null logger instance.
Definition ilogger.h:271

◆ ~scp_service()

virtual kcenon::pacs::services::scp_service::~scp_service ( )
virtualdefault

◆ scp_service() [2/3]

kcenon::pacs::services::scp_service::scp_service ( const scp_service & )
delete

◆ scp_service() [3/3]

kcenon::pacs::services::scp_service::scp_service ( scp_service && )
default

Member Function Documentation

◆ handle_message()

virtual network::Result< std::monostate > kcenon::pacs::services::scp_service::handle_message ( network::association & assoc,
uint8_t context_id,
const network::dimse::dimse_message & request )
nodiscardpure virtual

Handle an incoming DIMSE message.

Processes the request and sends appropriate response(s) via the association.

Parameters
assocThe association on which the message was received
context_idThe presentation context ID for the message
requestThe incoming DIMSE request message
Returns
Success or error result

Implemented in kcenon::pacs::services::mpps_scp, kcenon::pacs::services::n_get_scp, kcenon::pacs::services::print_scp, kcenon::pacs::services::query_scp, kcenon::pacs::services::retrieve_scp, kcenon::pacs::services::storage_commitment_scp, kcenon::pacs::services::storage_scp, kcenon::pacs::services::ups_push_scp, kcenon::pacs::services::ups_query_scp, kcenon::pacs::services::ups_watch_scp, kcenon::pacs::services::verification_scp, and kcenon::pacs::services::worklist_scp.

◆ logger()

const std::shared_ptr< di::ILogger > & kcenon::pacs::services::scp_service::logger ( ) const
inlinenodiscardnoexcept

Get the current logger instance.

Returns
Shared pointer to the logger

Definition at line 93 of file scp_service.h.

93 {
94 return logger_;
95 }

References logger_.

Referenced by set_logger().

Here is the caller graph for this function:

◆ operator=() [1/2]

scp_service & kcenon::pacs::services::scp_service::operator= ( const scp_service & )
delete

◆ operator=() [2/2]

scp_service & kcenon::pacs::services::scp_service::operator= ( scp_service && )
default

◆ service_name()

◆ set_logger()

void kcenon::pacs::services::scp_service::set_logger ( std::shared_ptr< di::ILogger > logger)
inline

Set the logger instance.

Parameters
loggerNew logger instance (nullptr uses null_logger)

Definition at line 84 of file scp_service.h.

84 {
85 logger_ = logger ? std::move(logger) : di::null_logger();
86 }

References logger(), logger_, and kcenon::pacs::di::null_logger().

Here is the call graph for this function:

◆ supported_sop_classes()

virtual std::vector< std::string > kcenon::pacs::services::scp_service::supported_sop_classes ( ) const
nodiscardpure virtual

◆ supports_sop_class()

bool kcenon::pacs::services::scp_service::supports_sop_class ( std::string_view sop_class_uid) const
inlinenodiscard

Check if this service supports a specific SOP Class.

Parameters
sop_class_uidThe SOP Class UID to check
Returns
true if the SOP Class is supported

Definition at line 140 of file scp_service.h.

140 {
141 const auto classes = supported_sop_classes();
142 for (const auto& uid : classes) {
143 if (uid == sop_class_uid) {
144 return true;
145 }
146 }
147 return false;
148 }
virtual std::vector< std::string > supported_sop_classes() const =0
Get the list of SOP Class UIDs supported by this service.
std::string_view uid

References supported_sop_classes(), and uid.

Referenced by kcenon::pacs::services::n_get_scp::handle_message().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ logger_


The documentation for this class was generated from the following file: