PLCnext API Documentation 23.6.0.37
Classes | Public Types | Static Public Member Functions | Protected Member Functions | Friends | List of all members
Arp::System::Commons::Ipc::SharedData< Derived > Class Template Reference
Inheritance diagram for Arp::System::Commons::Ipc::SharedData< Derived >:
Inheritance graph

Classes

class  Allocator
 
class  Mutex
 
class  NullMutex
 
class  ScopedLock
 

Public Types

using Base = SharedMemory
 
using DerivedType = Derived
 
using SingletonBase = AppDomainSingleton< Derived >
 
using SharedMemory = boost::interprocess::managed_shared_memory
 
using SegmentManager = SharedMemory::segment_manager
 
using SharedMemoryPermission = boost::interprocess::permissions
 
template<class T >
using Ptr = boost::interprocess::offset_ptr< T >
 
template<class T >
using ConstPtr = boost::interprocess::offset_ptr< const T >
 
using String = boost::interprocess::basic_string< char, std::char_traits< char >, Allocator< char > >
 
template<class T >
using vector = boost::interprocess::vector< T, Allocator< T > >
 
template<class T >
using list = boost::interprocess::list< T, Allocator< T > >
 
template<class TKey , class T , class TCompare = std::less<TKey>>
using map = boost::interprocess::map< TKey, T, TCompare, Allocator< std::pair< const TKey, T > > >
 
template<class T , class TCompare = std::less<T>>
using set = boost::interprocess::set< T, TCompare, Allocator< T > >
 
- Public Types inherited from Arp::System::Commons::Ipc::SharedMemory
typedef boost::interprocess::managed_shared_memory SharedMemoryImpl
 
typedef SharedMemoryImpl::segment_manager SegmentManager
 
typedef boost::interprocess::permissions SharedMemoryPermission
 
template<class T >
using Ptr = boost::interprocess::offset_ptr< T >
 Returned pointer types are shared memory based offset pointer.
 

Static Public Member Functions

static ARP_CXX_SYMBOL_EXPORT void CreateInstance (size_t memorySize)
 
static void OpenInstance (void)
 
static void CloseInstance (bool removeMemory=false)
 
static void Remove (void)
 
static void WaitInstance (const char *waitMessage, uint32 timeout=-1)
 
- Static Public Member Functions inherited from Arp::AppDomainSingleton< Derived >
template<class T = Instance, class ... Args>
static Derived & CreateInstance (Args &&... args)
 Creates this singleton instance. More...
 
static bool IsCreated (void)
 Determines if this singleton instance is created yet. More...
 
static Derived & GetInstance (void)
 Gets a reference of the singleton instance. More...
 
static Derived * GetInstancePtr (void)
 Depreacated! Gets a pointer to the singleton instance. More...
 
static void DisposeInstance (void)
 Disposes this singleton instance. More...
 

Protected Member Functions

 SharedData (size_t memorySize)
 
- Protected Member Functions inherited from Arp::AppDomainSingleton< Derived >
 AppDomainSingleton (void)=default
 The protected default constructor.
 
 ~AppDomainSingleton (void)=default
 The protected default destructor.
 

Friends

template<class T >
class Allocator
 

Additional Inherited Members

- Public Member Functions inherited from Arp::System::Commons::Ipc::SharedMemory
 SharedMemory (const char *name)
 Opens an existing shared memory. More...
 
 SharedMemory (const char *name, size_t memorySize)
 Creates an non-existing instance, throws if yet exists. More...
 
 ~SharedMemory (void)=default
 Deallocates the memory for this management object but not the memory shared between processes.
 
void Remove (void)
 Removes the shared memory from the system.
 
const Arp::StringGetName (void) const
 Returns the name of the memory object. More...
 
size_t GetSize (void) const
 Returns the capacity of the shared memory in bytes. More...
 
byteAllocate (size_t size)
 Tries to allocate size amount of bytes in the memory. More...
 
void Deallocate (byte *pMemory)
 Marks the memory pointed to by pMemory available for new allocation requests. More...
 
template<class T >
Ptr< T > Get (const char *name)
 Tries to find a previously allocated named object. More...
 
template<class T , typename ... TArgs>
Ptr< T > GetOrConstruct (const char *name, TArgs... args)
 Tries to find object identified by name, creates a new one if the object does not exists yet. More...
 
template<class T , typename ... TArgs>
Ptr< T > Construct (const char *name, TArgs... args)
 Creates a named object in the shared memory. More...
 
template<class T >
void Destroy (const char *name)
 Deallocates the object in the shared memory, also calling the objects destructor. More...
 
template<class T , typename ... TArgs>
Ptr< T > ConstructUnnamed (TArgs... args)
 Creates an unnamed object in the shared memory. More...
 
template<class T >
void DestroyUnnamed (SharedMemory::Ptr< T > ptr)
 Deallocates the unnamed object in the shared memory, also calling the objects destructor. More...
 
size_t GetFreeMemory (void) const
 Obtain the number of free bytes in the shared memory. More...
 
void ZeroFreeMemory (void)
 Writes zero in all bytes not yet allocated.
 
bool AllMemoryDeallocated (void)
 Checks if all memory has been deallocated. More...
 
bool CheckSanity (void)
 Performs a sanity check over the shared memory. More...
 
- Protected Types inherited from Arp::AppDomainSingleton< Derived >
typedef AppDomainSingleton< Derived > SingletonBase
 Defines this type to be used from derived classes.
 
- Protected Attributes inherited from Arp::System::Commons::Ipc::SharedMemory
Arp::String memoryName
 Name of memory identifying the shared memory inside the operating system.
 
SharedMemoryImpl sharedMemoryImpl
 Actual implementation of the shared memory functionality.
 

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