PACS System 0.1.0
PACS DICOM system library
Loading...
Searching...
No Matches
kcenon::pacs::network::pdu_buffer_pool Class Reference

#include <pdu_buffer_pool.h>

Collaboration diagram for kcenon::pacs::network::pdu_buffer_pool:
Collaboration graph

Public Member Functions

auto acquire_buffer () -> tracked_pdu_pool< pooled_buffer >::unique_ptr_type
 Acquire a byte buffer from the pool.
 
auto acquire_pdv (uint8_t context_id=0, bool is_command=false, bool is_last=true) -> tracked_pdu_pool< presentation_data_value >::unique_ptr_type
 Acquire a presentation_data_value from the pool.
 
auto acquire_p_data_tf () -> tracked_pdu_pool< p_data_tf_pdu >::unique_ptr_type
 Acquire a p_data_tf_pdu from the pool.
 
auto buffer_statistics () const noexcept -> const pdu_pool_statistics &
 Get buffer pool statistics.
 
auto pdv_statistics () const noexcept -> const pdu_pool_statistics &
 Get PDV pool statistics.
 
auto p_data_statistics () const noexcept -> const pdu_pool_statistics &
 Get P-DATA-TF pool statistics.
 
void reserve_buffers (std::size_t count)
 Reserve capacity in buffer pool.
 
void reserve_pdvs (std::size_t count)
 Reserve capacity in PDV pool.
 
void clear_all ()
 Clear all pools.
 
void reset_statistics ()
 Reset all statistics.
 
 pdu_buffer_pool (const pdu_buffer_pool &)=delete
 
 pdu_buffer_pool (pdu_buffer_pool &&)=delete
 
auto operator= (const pdu_buffer_pool &) -> pdu_buffer_pool &=delete
 
auto operator= (pdu_buffer_pool &&) -> pdu_buffer_pool &=delete
 

Static Public Member Functions

static auto get () noexcept -> pdu_buffer_pool &
 Get the global PDU buffer pool instance.
 

Static Public Attributes

static constexpr std::size_t DEFAULT_BUFFER_POOL_SIZE = 256
 Default pool sizes.
 
static constexpr std::size_t DEFAULT_PDV_POOL_SIZE = 128
 
static constexpr std::size_t DEFAULT_PDATA_POOL_SIZE = 64
 

Private Member Functions

 pdu_buffer_pool ()
 
 ~pdu_buffer_pool ()=default
 

Private Attributes

tracked_pdu_pool< pooled_bufferbuffer_pool_
 
tracked_pdu_pool< presentation_data_valuepdv_pool_
 
tracked_pdu_pool< p_data_tf_pdup_data_pool_
 

Detailed Description

Definition at line 249 of file pdu_buffer_pool.h.

Constructor & Destructor Documentation

◆ pdu_buffer_pool() [1/3]

kcenon::pacs::network::pdu_buffer_pool::pdu_buffer_pool ( const pdu_buffer_pool & )
delete

◆ pdu_buffer_pool() [2/3]

kcenon::pacs::network::pdu_buffer_pool::pdu_buffer_pool ( pdu_buffer_pool && )
delete

◆ pdu_buffer_pool() [3/3]

kcenon::pacs::network::pdu_buffer_pool::pdu_buffer_pool ( )
private
Examples
/home/runner/work/pacs_system/pacs_system/include/kcenon/pacs/network/pdu_buffer_pool.h.

Definition at line 19 of file pdu_buffer_pool.cpp.

tracked_pdu_pool< p_data_tf_pdu > p_data_pool_
tracked_pdu_pool< presentation_data_value > pdv_pool_
static constexpr std::size_t DEFAULT_PDV_POOL_SIZE
static constexpr std::size_t DEFAULT_PDATA_POOL_SIZE
static constexpr std::size_t DEFAULT_BUFFER_POOL_SIZE
Default pool sizes.
tracked_pdu_pool< pooled_buffer > buffer_pool_

◆ ~pdu_buffer_pool()

kcenon::pacs::network::pdu_buffer_pool::~pdu_buffer_pool ( )
privatedefault

Member Function Documentation

◆ acquire_buffer()

auto kcenon::pacs::network::pdu_buffer_pool::acquire_buffer ( ) -> tracked_pdu_pool<pooled_buffer>::unique_ptr_type

Acquire a byte buffer from the pool.

Returns
A pooled byte buffer
Examples
/home/runner/work/pacs_system/pacs_system/include/kcenon/pacs/network/pdu_buffer_pool.h.

Definition at line 29 of file pdu_buffer_pool.cpp.

30 {
31 auto buffer = buffer_pool_.acquire();
32 buffer->clear(); // Reset buffer state for reuse
33 return buffer;
34}

◆ acquire_p_data_tf()

auto kcenon::pacs::network::pdu_buffer_pool::acquire_p_data_tf ( ) -> tracked_pdu_pool<p_data_tf_pdu>::unique_ptr_type

Acquire a p_data_tf_pdu from the pool.

Returns
A pooled p_data_tf_pdu
Examples
/home/runner/work/pacs_system/pacs_system/include/kcenon/pacs/network/pdu_buffer_pool.h.

Definition at line 47 of file pdu_buffer_pool.cpp.

48 {
49 auto p_data = p_data_pool_.acquire();
50 p_data->pdvs.clear(); // Reset PDV vector for reuse
51 return p_data;
52}

◆ acquire_pdv()

auto kcenon::pacs::network::pdu_buffer_pool::acquire_pdv ( uint8_t context_id = 0,
bool is_command = false,
bool is_last = true ) -> tracked_pdu_pool<presentation_data_value>::unique_ptr_type

Acquire a presentation_data_value from the pool.

Parameters
context_idPresentation Context ID
is_commandWhether this is a command message
is_lastWhether this is the last fragment
Returns
A pooled presentation_data_value
Examples
/home/runner/work/pacs_system/pacs_system/include/kcenon/pacs/network/pdu_buffer_pool.h.

Definition at line 36 of file pdu_buffer_pool.cpp.

38 {
39 auto pdv = pdv_pool_.acquire();
40 pdv->context_id = context_id;
41 pdv->is_command = is_command;
42 pdv->is_last = is_last;
43 pdv->data.clear(); // Reset data vector for reuse
44 return pdv;
45}

◆ buffer_statistics()

auto kcenon::pacs::network::pdu_buffer_pool::buffer_statistics ( ) const -> const pdu_pool_statistics&
nodiscardnoexcept

Get buffer pool statistics.

Returns
Reference to buffer pool statistics
Examples
/home/runner/work/pacs_system/pacs_system/include/kcenon/pacs/network/pdu_buffer_pool.h.

Definition at line 54 of file pdu_buffer_pool.cpp.

55 {
56 return buffer_pool_.statistics();
57}

References buffer_pool_.

◆ clear_all()

void kcenon::pacs::network::pdu_buffer_pool::clear_all ( )

Clear all pools.

Examples
/home/runner/work/pacs_system/pacs_system/include/kcenon/pacs/network/pdu_buffer_pool.h.

Definition at line 77 of file pdu_buffer_pool.cpp.

77 {
78 buffer_pool_.clear();
79 pdv_pool_.clear();
80 p_data_pool_.clear();
81}

References buffer_pool_, p_data_pool_, and pdv_pool_.

◆ get()

auto kcenon::pacs::network::pdu_buffer_pool::get ( ) -> pdu_buffer_pool&
staticnoexcept

Get the global PDU buffer pool instance.

Returns
Reference to the singleton instance
Examples
/home/runner/work/pacs_system/pacs_system/include/kcenon/pacs/network/pdu_buffer_pool.h.

Definition at line 24 of file pdu_buffer_pool.cpp.

24 {
25 static pdu_buffer_pool instance;
26 return instance;
27}

Referenced by kcenon::pacs::network::make_pooled_p_data_tf(), kcenon::pacs::network::make_pooled_pdu_buffer(), kcenon::pacs::network::make_pooled_pdu_buffer(), and kcenon::pacs::network::make_pooled_pdv().

Here is the caller graph for this function:

◆ operator=() [1/2]

auto kcenon::pacs::network::pdu_buffer_pool::operator= ( const pdu_buffer_pool & ) -> pdu_buffer_pool &=delete
delete

◆ operator=() [2/2]

auto kcenon::pacs::network::pdu_buffer_pool::operator= ( pdu_buffer_pool && ) -> pdu_buffer_pool &=delete
delete

◆ p_data_statistics()

auto kcenon::pacs::network::pdu_buffer_pool::p_data_statistics ( ) const -> const pdu_pool_statistics&
nodiscardnoexcept

Get P-DATA-TF pool statistics.

Returns
Reference to P-DATA-TF pool statistics
Examples
/home/runner/work/pacs_system/pacs_system/include/kcenon/pacs/network/pdu_buffer_pool.h.

Definition at line 64 of file pdu_buffer_pool.cpp.

65 {
66 return p_data_pool_.statistics();
67}

References p_data_pool_.

◆ pdv_statistics()

auto kcenon::pacs::network::pdu_buffer_pool::pdv_statistics ( ) const -> const pdu_pool_statistics&
nodiscardnoexcept

Get PDV pool statistics.

Returns
Reference to PDV pool statistics
Examples
/home/runner/work/pacs_system/pacs_system/include/kcenon/pacs/network/pdu_buffer_pool.h.

Definition at line 59 of file pdu_buffer_pool.cpp.

60 {
61 return pdv_pool_.statistics();
62}

References pdv_pool_.

◆ reserve_buffers()

void kcenon::pacs::network::pdu_buffer_pool::reserve_buffers ( std::size_t count)

Reserve capacity in buffer pool.

Parameters
countNumber of buffers to pre-allocate
Examples
/home/runner/work/pacs_system/pacs_system/include/kcenon/pacs/network/pdu_buffer_pool.h.

Definition at line 69 of file pdu_buffer_pool.cpp.

69 {
70 buffer_pool_.reserve(count);
71}

References buffer_pool_.

◆ reserve_pdvs()

void kcenon::pacs::network::pdu_buffer_pool::reserve_pdvs ( std::size_t count)

Reserve capacity in PDV pool.

Parameters
countNumber of PDVs to pre-allocate
Examples
/home/runner/work/pacs_system/pacs_system/include/kcenon/pacs/network/pdu_buffer_pool.h.

Definition at line 73 of file pdu_buffer_pool.cpp.

73 {
74 pdv_pool_.reserve(count);
75}

References pdv_pool_.

◆ reset_statistics()

void kcenon::pacs::network::pdu_buffer_pool::reset_statistics ( )

Reset all statistics.

Examples
/home/runner/work/pacs_system/pacs_system/include/kcenon/pacs/network/pdu_buffer_pool.h.

Definition at line 83 of file pdu_buffer_pool.cpp.

83 {
84 const_cast<pdu_pool_statistics&>(buffer_pool_.statistics()).reset();
85 const_cast<pdu_pool_statistics&>(pdv_pool_.statistics()).reset();
86 const_cast<pdu_pool_statistics&>(p_data_pool_.statistics()).reset();
87}

References buffer_pool_, p_data_pool_, pdv_pool_, and kcenon::pacs::network::pdu_pool_statistics::reset().

Here is the call graph for this function:

Member Data Documentation

◆ buffer_pool_

◆ DEFAULT_BUFFER_POOL_SIZE

std::size_t kcenon::pacs::network::pdu_buffer_pool::DEFAULT_BUFFER_POOL_SIZE = 256
staticconstexpr

◆ DEFAULT_PDATA_POOL_SIZE

std::size_t kcenon::pacs::network::pdu_buffer_pool::DEFAULT_PDATA_POOL_SIZE = 64
staticconstexpr

◆ DEFAULT_PDV_POOL_SIZE

std::size_t kcenon::pacs::network::pdu_buffer_pool::DEFAULT_PDV_POOL_SIZE = 128
staticconstexpr

◆ p_data_pool_

tracked_pdu_pool<p_data_tf_pdu> kcenon::pacs::network::pdu_buffer_pool::p_data_pool_
private

◆ pdv_pool_


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