lintel 0.2.0
Loading...
Searching...
No Matches
Classes | Public Member Functions | Protected Member Functions | Static Protected Member Functions | List of all members
lintel::SharedMemoryRepository Class Referenceabstract

#include <SharedMemoryRepository.h>

Inheritance diagram for lintel::SharedMemoryRepository:
lintel::JsonSerializable lintel::SharedMemoryMapRepository< shm::String, PropertyDataDto, shm::String, PropertyDataDao > lintel::SharedMemoryArrayRepository< DATA, DAO, MaxSize > lintel::SharedMemoryMapRepository< KEY, VALUE, KeyDao, ValueDao > lintel::SharedMemoryObjectRepository< DATA, DAO > lintel::SharedMemoryVectorRepository< DATA, DAO > lintel::SharedMemoryPropertyRepository

Classes

class  ReadLockGuard
 

Public Member Functions

 SharedMemoryRepository (std::shared_ptr< SharedMemorySegment > sharedMemorySegment, std::size_t sizeOfData, std::string_view sharedMemoryRepository, int32_t codeVersion, std::string uuid)
 
const std::shared_ptr< SharedMemorySegment > & getSharedMemorySegment () const
 
std::size_t getSizeOfData () const
 
const std::string & getSharedMemoryRepository () const
 
int32_t getCodeVersion () const
 
const std::string & getUuid () const
 
virtual SharedMemoryType getType () const =0
 
std::string_view getTypeName () const
 
 ~SharedMemoryRepository () override=default
 
virtual void onMigrate (int32_t currentActiveVersion)=0
 
- Public Member Functions inherited from lintel::JsonSerializable
 JsonSerializable ()=default
 
virtual ~JsonSerializable ()=default
 
virtual bool deserialize (const rapidjson::Value &obj)
 
virtual void serialize (rapidjson::Writer< rapidjson::StringBuffer > *writer) const =0
 
virtual std::string serialize () const
 
virtual void deserialize (const std::string &json)
 

Protected Member Functions

virtual void onAcquireReadLock () const
 
virtual void onReleaseReadLock () const
 

Static Protected Member Functions

template<typename TYPE >
static constexpr bool isSerializable ()
 

Detailed Description

Base class for shared-memory-backed repositories with JSON serialization.

Constructor & Destructor Documentation

◆ SharedMemoryRepository()

lintel::SharedMemoryRepository::SharedMemoryRepository ( std::shared_ptr< SharedMemorySegment >  sharedMemorySegment,
std::size_t  sizeOfData,
std::string_view  sharedMemoryRepository,
int32_t  codeVersion,
std::string  uuid 
)

Constructor.

Parameters
sharedMemorySegmentthe underlying shared memory segment
sizeOfDatasize of each data element in bytes
sharedMemoryRepositoryname/path of this repository
codeVersionversion of the code that created this repository
uuidunique identifier for this repository instance

◆ ~SharedMemoryRepository()

lintel::SharedMemoryRepository::~SharedMemoryRepository ( )
overridedefault

Member Function Documentation

◆ getCodeVersion()

int32_t lintel::SharedMemoryRepository::getCodeVersion ( ) const
Returns
code version

◆ getSharedMemoryRepository()

const std::string & lintel::SharedMemoryRepository::getSharedMemoryRepository ( ) const
Returns
name/path of this repository

◆ getSharedMemorySegment()

const std::shared_ptr< SharedMemorySegment > & lintel::SharedMemoryRepository::getSharedMemorySegment ( ) const
Returns
the underlying shared memory segment

◆ getSizeOfData()

std::size_t lintel::SharedMemoryRepository::getSizeOfData ( ) const
Returns
size of each data element in bytes

◆ getType()

virtual SharedMemoryType lintel::SharedMemoryRepository::getType ( ) const
pure virtual

◆ getTypeName()

std::string_view lintel::SharedMemoryRepository::getTypeName ( ) const
inline

◆ getUuid()

const std::string & lintel::SharedMemoryRepository::getUuid ( ) const
Returns
unique identifier

◆ isSerializable()

template<typename TYPE >
static constexpr bool lintel::SharedMemoryRepository::isSerializable ( )
inlinestaticconstexprprotected

◆ onAcquireReadLock()

virtual void lintel::SharedMemoryRepository::onAcquireReadLock ( ) const
inlineprotectedvirtual

Acquire the shared read lock before serializing the underlying shared memory structure. No-op by default.

Reimplemented in lintel::SharedMemoryPropertyRepository.

◆ onMigrate()

virtual void lintel::SharedMemoryRepository::onMigrate ( int32_t  currentActiveVersion)
pure virtual

◆ onReleaseReadLock()

virtual void lintel::SharedMemoryRepository::onReleaseReadLock ( ) const
inlineprotectedvirtual

Release the shared read lock after serialization. No-op by default.

Reimplemented in lintel::SharedMemoryPropertyRepository.


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