Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | List of all members
FIX::shared_array< T > Class Template Reference

Shared array with atomic reference count. More...

#include <SharedArray.h>

Inheritance diagram for FIX::shared_array< T >:
Inheritance graph
[legend]

Public Member Functions

 shared_array ()
 
 shared_array (const shared_array &rhs)
 
 ~shared_array ()
 
shared_arrayoperator= (const shared_array &rhs)
 
std::size_t size () const
 
bool empty () const
 
 operator T* () const
 

Static Public Member Functions

static shared_array create (const std::size_t nSize)
 

Private Member Functions

 shared_array (T *buff, std::size_t nSize, void *pCtr)
 
atomic_countget_counter () const
 
void increment_reference_count () const
 
long decrement_reference_count () const
 
void attach () const
 
void release ()
 

Private Attributes

std::size_t m_size
 
T * m_buffer
 
void * m_pCtr
 

Detailed Description

template<typename T>
class FIX::shared_array< T >

Shared array with atomic reference count.

Definition at line 174 of file SharedArray.h.

Constructor & Destructor Documentation

◆ shared_array() [1/3]

template<typename T >
FIX::shared_array< T >::shared_array ( )
inline

Definition at line 194 of file SharedArray.h.

195  { return m_buffer == 0; }
196 
197  operator T* () const
198  { return m_buffer; }

Referenced by FIX::shared_array< int >::shared_array().

◆ shared_array() [2/3]

template<typename T >
FIX::shared_array< T >::shared_array ( const shared_array< T > &  rhs)
inline

Definition at line 200 of file SharedArray.h.

202  {
203  if(nSize <= 0)
204  return shared_array();
205 

◆ ~shared_array()

template<typename T >
FIX::shared_array< T >::~shared_array ( )
inline

Definition at line 207 of file SharedArray.h.

◆ shared_array() [3/3]

template<typename T >
FIX::shared_array< T >::shared_array ( T *  buff,
std::size_t  nSize,
void *  pCtr 
)
inlineprivate

Definition at line 259 of file SharedArray.h.

263  {
264  T * tmpBuff = m_buffer;
265  atomic_count* tmpCounter = get_counter();

Member Function Documentation

◆ attach()

template<typename T >
void FIX::shared_array< T >::attach ( ) const
inlineprivate

Definition at line 284 of file SharedArray.h.

◆ create()

template<typename T >
static shared_array FIX::shared_array< T >::create ( const std::size_t  nSize)
inlinestatic

Definition at line 235 of file SharedArray.h.

239  {
240  atomic_count* counter = get_counter();
241  ++(*counter);
242  }
243 
244  long decrement_reference_count() const
245  {
246  atomic_count* counter = get_counter();
247  return --(*counter);
248  }
249 
250  void attach() const
251  {
252  if( !empty() )
254  }
255 

Referenced by FIX::message_order::message_order().

◆ decrement_reference_count()

template<typename T >
long FIX::shared_array< T >::decrement_reference_count ( ) const
inlineprivate

Definition at line 278 of file SharedArray.h.

◆ empty()

template<typename T >
bool FIX::shared_array< T >::empty ( ) const
inline

Definition at line 228 of file SharedArray.h.

229  {

Referenced by FIX::message_order::operator()().

◆ get_counter()

template<typename T >
atomic_count* FIX::shared_array< T >::get_counter ( ) const
inlineprivate

Definition at line 267 of file SharedArray.h.

Referenced by FIX::shared_array< int >::shared_array().

◆ increment_reference_count()

template<typename T >
void FIX::shared_array< T >::increment_reference_count ( ) const
inlineprivate

Definition at line 272 of file SharedArray.h.

◆ operator T*()

template<typename T >
FIX::shared_array< T >::operator T* ( ) const
inline

Definition at line 231 of file SharedArray.h.

234  {

◆ operator=()

template<typename T >
shared_array& FIX::shared_array< T >::operator= ( const shared_array< T > &  rhs)
inline

Definition at line 210 of file SharedArray.h.

223  :
224 

◆ release()

template<typename T >
void FIX::shared_array< T >::release ( )
inlineprivate

Definition at line 290 of file SharedArray.h.

◆ size()

template<typename T >
std::size_t FIX::shared_array< T >::size ( ) const
inline

Definition at line 225 of file SharedArray.h.

226  : m_size(nSize)

Member Data Documentation

◆ m_buffer

template<typename T >
T* FIX::shared_array< T >::m_buffer
private

Definition at line 312 of file SharedArray.h.

Referenced by FIX::shared_array< int >::shared_array().

◆ m_pCtr

template<typename T >
void* FIX::shared_array< T >::m_pCtr
private

Definition at line 313 of file SharedArray.h.

◆ m_size

template<typename T >
std::size_t FIX::shared_array< T >::m_size
private

Definition at line 311 of file SharedArray.h.


The documentation for this class was generated from the following file:
FIX::shared_array::get_counter
atomic_count * get_counter() const
Definition: SharedArray.h:267
FIX::shared_array::increment_reference_count
void increment_reference_count() const
Definition: SharedArray.h:272
FIX::shared_array::decrement_reference_count
long decrement_reference_count() const
Definition: SharedArray.h:278
FIX::shared_array::m_size
std::size_t m_size
Definition: SharedArray.h:311
FIX::shared_array::m_buffer
T * m_buffer
Definition: SharedArray.h:312
FIX::shared_array::shared_array
shared_array()
Definition: SharedArray.h:194
FIX::shared_array::attach
void attach() const
Definition: SharedArray.h:284
FIX::shared_array::empty
bool empty() const
Definition: SharedArray.h:228

Generated on Wed Apr 29 2020 19:41:30 for QuickFIX by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2001