|
PACS System 0.1.0
PACS DICOM system library
|
Encoder for DICOM PDU (Protocol Data Unit) messages. More...
#include <pdu_encoder.h>

Static Public Member Functions | |
Association PDUs | |
| static std::vector< uint8_t > | encode_associate_rq (const associate_rq &rq) |
| Encodes an A-ASSOCIATE-RQ PDU. | |
| static std::vector< uint8_t > | encode_associate_ac (const associate_ac &ac) |
| Encodes an A-ASSOCIATE-AC PDU. | |
| static std::vector< uint8_t > | encode_associate_rj (const associate_rj &rj) |
| Encodes an A-ASSOCIATE-RJ PDU. | |
Release PDUs | |
| static std::vector< uint8_t > | encode_release_rq () |
| Encodes an A-RELEASE-RQ PDU. | |
| static std::vector< uint8_t > | encode_release_rp () |
| Encodes an A-RELEASE-RP PDU. | |
Abort PDU | |
| static std::vector< uint8_t > | encode_abort (uint8_t source, uint8_t reason) |
| Encodes an A-ABORT PDU. | |
| static std::vector< uint8_t > | encode_abort (abort_source source, abort_reason reason) |
| Encodes an A-ABORT PDU using typed enums. | |
Data PDU | |
| static std::vector< uint8_t > | encode_p_data_tf (const std::vector< presentation_data_value > &pdvs) |
| Encodes a P-DATA-TF PDU. | |
| static std::vector< uint8_t > | encode_p_data_tf (const presentation_data_value &pdv) |
| Encodes a single PDV into a P-DATA-TF PDU. | |
Static Private Member Functions | |
Helper Functions | |
| static void | write_uint16_be (std::vector< uint8_t > &buffer, uint16_t value) |
| Writes a 16-bit unsigned integer in big-endian format. | |
| static void | write_uint32_be (std::vector< uint8_t > &buffer, uint32_t value) |
| Writes a 32-bit unsigned integer in big-endian format. | |
| static void | write_ae_title (std::vector< uint8_t > &buffer, const std::string &ae_title) |
| Writes an AE Title (16 bytes, space-padded). | |
| static void | write_uid (std::vector< uint8_t > &buffer, const std::string &uid) |
| Writes a UID string. | |
| static void | update_pdu_length (std::vector< uint8_t > &buffer) |
| Updates the PDU length field at position 2-5. | |
| static void | encode_application_context (std::vector< uint8_t > &buffer, const std::string &context_name) |
| Encodes an Application Context item. | |
| static void | encode_presentation_context_rq (std::vector< uint8_t > &buffer, const presentation_context_rq &pc) |
| Encodes a Presentation Context item for A-ASSOCIATE-RQ. | |
| static void | encode_presentation_context_ac (std::vector< uint8_t > &buffer, const presentation_context_ac &pc) |
| Encodes a Presentation Context item for A-ASSOCIATE-AC. | |
| static void | encode_user_information (std::vector< uint8_t > &buffer, const user_information &user_info) |
| Encodes a User Information item. | |
| static void | encode_associate_header (std::vector< uint8_t > &buffer, pdu_type type, const std::string &called_ae, const std::string &calling_ae) |
| Encodes the common header portion for ASSOCIATE-RQ/AC PDUs. | |
Encoder for DICOM PDU (Protocol Data Unit) messages.
This class provides static methods to encode various PDU types according to DICOM PS3.8 Upper Layer Protocol.
PDU Structure:
Definition at line 41 of file pdu_encoder.h.
|
staticnodiscard |
Encodes an A-ABORT PDU using typed enums.
| source | Abort source |
| reason | Abort reason |
Definition at line 430 of file pdu_encoder.cpp.
References encode_abort().

|
staticnodiscard |
Encodes an A-ABORT PDU.
| source | Abort source (0=UL service-user, 2=UL service-provider) |
| reason | Abort reason (only applicable when source=2) |
Definition at line 406 of file pdu_encoder.cpp.
References kcenon::pacs::network::abort, and write_uint32_be().
Referenced by encode_abort(), and kcenon::pacs::network::v2::dicom_association_handler::send_abort().


|
staticprivate |
Encodes an Application Context item.
Definition at line 64 of file pdu_encoder.cpp.
References kcenon::pacs::network::application_context, write_uid(), and write_uint16_be().
Referenced by encode_associate_ac(), and encode_associate_rq().


|
staticnodiscard |
Encodes an A-ASSOCIATE-AC PDU.
| ac | The association accept data |
Definition at line 323 of file pdu_encoder.cpp.
References kcenon::pacs::network::associate_ac::application_context, kcenon::pacs::network::associate_ac, kcenon::pacs::network::associate_ac::called_ae_title, kcenon::pacs::network::associate_ac::calling_ae_title, kcenon::pacs::network::DICOM_APPLICATION_CONTEXT, encode_application_context(), encode_associate_header(), encode_presentation_context_ac(), encode_user_information(), kcenon::pacs::network::associate_ac::presentation_contexts, update_pdu_length(), and kcenon::pacs::network::associate_ac::user_info.
Referenced by kcenon::pacs::network::v2::dicom_association_handler::send_associate_ac().


|
staticprivate |
Encodes the common header portion for ASSOCIATE-RQ/AC PDUs.
Definition at line 270 of file pdu_encoder.cpp.
References kcenon::pacs::network::DICOM_PROTOCOL_VERSION, write_ae_title(), write_uint16_be(), and write_uint32_be().
Referenced by encode_associate_ac(), and encode_associate_rq().


|
staticnodiscard |
Encodes an A-ASSOCIATE-RJ PDU.
| rj | The association reject data |
Definition at line 345 of file pdu_encoder.cpp.
References kcenon::pacs::network::associate_rj, kcenon::pacs::network::associate_rj::reason, kcenon::pacs::network::associate_rj::result, kcenon::pacs::network::associate_rj::source, and write_uint32_be().
Referenced by kcenon::pacs::network::v2::dicom_association_handler::send_associate_rj().


|
staticnodiscard |
Encodes an A-ASSOCIATE-RQ PDU.
| rq | The association request data |
Definition at line 301 of file pdu_encoder.cpp.
References kcenon::pacs::network::associate_rq::application_context, kcenon::pacs::network::associate_rq, kcenon::pacs::network::associate_rq::called_ae_title, kcenon::pacs::network::associate_rq::calling_ae_title, kcenon::pacs::network::DICOM_APPLICATION_CONTEXT, encode_application_context(), encode_associate_header(), encode_presentation_context_rq(), encode_user_information(), kcenon::pacs::network::associate_rq::presentation_contexts, update_pdu_length(), and kcenon::pacs::network::associate_rq::user_info.

|
staticnodiscard |
Encodes a single PDV into a P-DATA-TF PDU.
| pdv | The Presentation Data Value |
Definition at line 481 of file pdu_encoder.cpp.
References encode_p_data_tf().

|
staticnodiscard |
Encodes a P-DATA-TF PDU.
| pdvs | List of Presentation Data Values to send |
P-DATA-TF can contain multiple PDV items. Each PDV has:
Definition at line 436 of file pdu_encoder.cpp.
References kcenon::pacs::network::p_data_tf, update_pdu_length(), and write_uint32_be().
Referenced by encode_p_data_tf().


|
staticprivate |
Encodes a Presentation Context item for A-ASSOCIATE-AC.
Definition at line 143 of file pdu_encoder.cpp.
References kcenon::pacs::network::acceptance, kcenon::pacs::network::presentation_context_ac::id, kcenon::pacs::network::presentation_context_ac, kcenon::pacs::network::presentation_context_ac::result, kcenon::pacs::network::transfer_syntax, kcenon::pacs::network::presentation_context_ac::transfer_syntax, write_uid(), and write_uint16_be().
Referenced by encode_associate_ac().


|
staticprivate |
Encodes a Presentation Context item for A-ASSOCIATE-RQ.
Definition at line 85 of file pdu_encoder.cpp.
References kcenon::pacs::network::abstract_syntax, kcenon::pacs::network::presentation_context_rq::abstract_syntax, kcenon::pacs::network::presentation_context_rq::id, kcenon::pacs::network::presentation_context_rq, kcenon::pacs::network::transfer_syntax, kcenon::pacs::network::presentation_context_rq::transfer_syntaxes, write_uid(), and write_uint16_be().
Referenced by encode_associate_rq().


|
staticnodiscard |
Encodes an A-RELEASE-RP PDU.
Definition at line 388 of file pdu_encoder.cpp.
References kcenon::pacs::network::release_rp, and write_uint32_be().
Referenced by kcenon::pacs::network::v2::dicom_association_handler::send_release_rp().


|
staticnodiscard |
Encodes an A-RELEASE-RQ PDU.
Definition at line 370 of file pdu_encoder.cpp.
References kcenon::pacs::network::release_rq, and write_uint32_be().

|
staticprivate |
Encodes a User Information item.
Definition at line 189 of file pdu_encoder.cpp.
References kcenon::pacs::network::implementation_class_uid, kcenon::pacs::network::user_information::implementation_class_uid, kcenon::pacs::network::implementation_version_name, kcenon::pacs::network::user_information::implementation_version_name, kcenon::pacs::network::user_information::max_pdu_length, kcenon::pacs::network::maximum_length, kcenon::pacs::network::user_information::role_selections, kcenon::pacs::network::scp_scu_role_selection, kcenon::pacs::network::user_information, write_uid(), write_uint16_be(), and write_uint32_be().
Referenced by encode_associate_ac(), and encode_associate_rq().


|
staticprivate |
Updates the PDU length field at position 2-5.
Definition at line 48 of file pdu_encoder.cpp.
Referenced by encode_associate_ac(), encode_associate_rq(), and encode_p_data_tf().

|
staticprivate |
Writes an AE Title (16 bytes, space-padded).
Definition at line 28 of file pdu_encoder.cpp.
References kcenon::pacs::network::AE_TITLE_LENGTH.
Referenced by encode_associate_header().

|
staticprivate |
Writes a UID string.
Definition at line 40 of file pdu_encoder.cpp.
References uid.
Referenced by encode_application_context(), encode_presentation_context_ac(), encode_presentation_context_rq(), and encode_user_information().

|
staticprivate |
Writes a 16-bit unsigned integer in big-endian format.
Definition at line 16 of file pdu_encoder.cpp.
Referenced by encode_application_context(), encode_associate_header(), encode_presentation_context_ac(), encode_presentation_context_rq(), and encode_user_information().

|
staticprivate |
Writes a 32-bit unsigned integer in big-endian format.
Definition at line 21 of file pdu_encoder.cpp.
Referenced by encode_abort(), encode_associate_header(), encode_associate_rj(), encode_p_data_tf(), encode_release_rp(), encode_release_rq(), and encode_user_information().
