CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
edm::shared_memory::ReadBuffer Class Reference

#include <ReadBuffer.h>

Public Member Functions

std::pair< char *, std::size_t > buffer ()
 
int bufferIdentifier () const
 
const ReadBufferoperator= (const ReadBuffer &)=delete
 
const ReadBufferoperator= (ReadBuffer &&)=delete
 
 ReadBuffer (std::string const &iUniqueName, BufferInfo *iBufferInfo)
 
 ReadBuffer (const ReadBuffer &)=delete
 
 ReadBuffer (ReadBuffer &&)=delete
 

Private Member Functions

bool mustGetBufferAgain () const
 

Private Attributes

std::pair< char *, std::size_t > buffer_
 
BufferInfobufferInfo_
 
std::array< std::string, 2 > bufferNames_
 
char bufferOldIndex_
 
std::unique_ptr< boost::interprocess::managed_shared_memory > sm_
 

Detailed Description

Definition at line 34 of file ReadBuffer.h.

Constructor & Destructor Documentation

edm::shared_memory::ReadBuffer::ReadBuffer ( std::string const &  iUniqueName,
BufferInfo iBufferInfo 
)
inline

iUniqueName : must be unique for all processes running on a system. iBufferInfo : is a pointer to a shared_memory address where the same address needs to be shared by ReadBuffer and WriteBuffer.

Definition at line 39 of file ReadBuffer.h.

References bufferInfo_, bufferNames_, bufferOldIndex_, edm::shared_memory::buffer_names::kBuffer0, edm::shared_memory::buffer_names::kBuffer1, and operator=().

40  : buffer_{nullptr, 0}, bufferInfo_{iBufferInfo}, bufferOldIndex_{3} {
41  *bufferInfo_ = {0, 0};
42  bufferNames_[0] = iUniqueName + buffer_names::kBuffer0;
43  bufferNames_[1] = iUniqueName + buffer_names::kBuffer1;
44  }
constexpr char const *const kBuffer0
Definition: buffer_names.h:30
constexpr char const *const kBuffer1
Definition: buffer_names.h:31
std::array< std::string, 2 > bufferNames_
Definition: ReadBuffer.h:70
std::pair< char *, std::size_t > buffer_
Definition: ReadBuffer.h:67
edm::shared_memory::ReadBuffer::ReadBuffer ( const ReadBuffer )
delete
edm::shared_memory::ReadBuffer::ReadBuffer ( ReadBuffer &&  )
delete

Member Function Documentation

std::pair<char*, std::size_t> edm::shared_memory::ReadBuffer::buffer ( )
inline

Definition at line 54 of file ReadBuffer.h.

References buffer_, bufferInfo_, bufferNames_, bufferOldIndex_, edm::shared_memory::BufferInfo::index_, edm::shared_memory::buffer_names::kBuffer, mustGetBufferAgain(), and sm_.

54  {
55  if (mustGetBufferAgain()) {
56  using namespace boost::interprocess;
57  sm_ = std::make_unique<managed_shared_memory>(open_only, bufferNames_[bufferInfo_->index_].c_str());
58  buffer_ = sm_->find<char>(buffer_names::kBuffer);
60  }
61  return buffer_;
62  }
constexpr char const *const kBuffer
Definition: buffer_names.h:29
std::unique_ptr< boost::interprocess::managed_shared_memory > sm_
Definition: ReadBuffer.h:71
bool mustGetBufferAgain() const
Definition: ReadBuffer.h:65
std::array< std::string, 2 > bufferNames_
Definition: ReadBuffer.h:70
std::pair< char *, std::size_t > buffer_
Definition: ReadBuffer.h:67
int edm::shared_memory::ReadBuffer::bufferIdentifier ( ) const
inline
bool edm::shared_memory::ReadBuffer::mustGetBufferAgain ( ) const
inlineprivate
const ReadBuffer& edm::shared_memory::ReadBuffer::operator= ( const ReadBuffer )
delete

Referenced by ReadBuffer().

const ReadBuffer& edm::shared_memory::ReadBuffer::operator= ( ReadBuffer &&  )
delete

Member Data Documentation

std::pair<char*, std::size_t> edm::shared_memory::ReadBuffer::buffer_
private

Definition at line 67 of file ReadBuffer.h.

Referenced by buffer().

BufferInfo* edm::shared_memory::ReadBuffer::bufferInfo_
private

Definition at line 68 of file ReadBuffer.h.

Referenced by buffer(), bufferIdentifier(), mustGetBufferAgain(), and ReadBuffer().

std::array<std::string, 2> edm::shared_memory::ReadBuffer::bufferNames_
private

Definition at line 70 of file ReadBuffer.h.

Referenced by buffer(), and ReadBuffer().

char edm::shared_memory::ReadBuffer::bufferOldIndex_
private

Definition at line 69 of file ReadBuffer.h.

Referenced by buffer(), mustGetBufferAgain(), and ReadBuffer().

std::unique_ptr<boost::interprocess::managed_shared_memory> edm::shared_memory::ReadBuffer::sm_
private

Definition at line 71 of file ReadBuffer.h.

Referenced by buffer().