3#include "Arp/System/Core/TypeName.hxx" 
    4#include "Arp/System/Commons/Logging.h" 
    5#include "Arp/System/Commons/Threading/Thread.hpp" 
    6#include "boost/interprocess/managed_shared_memory.hpp" 
   11namespace Arp { 
namespace System { 
namespace Commons { 
namespace Ipc
 
   18    using SharedMemoryImpl          = boost::interprocess::managed_shared_memory;
 
   19    using SegmentManager            = SharedMemoryImpl::segment_manager;
 
   20    using SharedMemoryPermission    = boost::interprocess::permissions;
 
   24    using Ptr = boost::interprocess::offset_ptr<T>;
 
   50    template<
class T, 
typename ...TArgs>
 
   53    template<
class T, 
typename ...TArgs>
 
   59    template<
class T, 
typename ...TArgs>
 
   85    size_t memorySize = 0;
 
  103template<
class T, 
typename ...TArgs>
 
  106    Ptr<T> result = Get<T>(name);
 
  109        return Construct<T>(name, args...);
 
  118template<
class T, 
typename ...TArgs>
 
  129    Ptr<T> pValue = this->Get<T>(name);
 
  130    if (pValue != 
nullptr)
 
  140template<
class T, 
typename ...TArgs>
 
  146    return new (pResult) T(args...);
 
This class represents the Arp String. The implementation is based on std::string.
Definition: String.hpp:39
 
Derive from this class to inherit logging functionality.
Definition: Loggable.hxx:28
 
API to manage and manipulate memory shared between different processes
Definition: SharedMemory.hpp:16
 
void DestroyUnnamed(SharedMemory::Ptr< T > ptr)
Deallocates the unnamed object in the shared memory, also calling the objects destructor.
Definition: SharedMemory.hpp:152
 
byte * Allocate(size_t size)
Tries to allocate size amount of bytes in the memory.
Definition: SharedMemory.cpp:172
 
bool IsOwner(void) const
Determines if this instance is the woner of the shared memory, i.e. ths shared memory was created by ...
Definition: SharedMemory.cpp:150
 
void ZeroFreeMemory(void)
Writes zero in all bytes not yet allocated.
Definition: SharedMemory.cpp:201
 
Ptr< T > Get(const char *name)
Tries to find a previously allocated named object.
Definition: SharedMemory.hpp:94
 
SharedMemoryImpl sharedMemoryImpl
Actual implementation of the shared memory functionality.
Definition: SharedMemory.hpp:74
 
boost::interprocess::offset_ptr< T > Ptr
Returned pointer types are shared memory based offset pointer.
Definition: SharedMemory.hpp:24
 
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.
Definition: SharedMemory.hpp:104
 
void Deallocate(byte *pMemory)
Marks the memory pointed to by pMemory available for new allocation requests.
Definition: SharedMemory.cpp:179
 
bool AllMemoryDeallocated(void)
Checks if all memory has been deallocated.
Definition: SharedMemory.cpp:208
 
String memoryName
Name of memory identifying the shared memory inside the operating system.
Definition: SharedMemory.hpp:72
 
SharedMemory(const char *name)
Opens an existing shared memory.
Definition: SharedMemory.cpp:133
 
size_t GetSize(void) const
Returns the capacity of the shared memory in bytes.
Definition: SharedMemory.cpp:164
 
void Destroy(const char *name)
Deallocates the object in the shared memory, also calling the objects destructor.
Definition: SharedMemory.hpp:127
 
size_t GetFreeMemory(void) const
Obtain the number of free bytes in the shared memory.
Definition: SharedMemory.cpp:195
 
const String & GetName(void) const
Returns the name of the memory object.
Definition: SharedMemory.cpp:157
 
~SharedMemory(void)
Deallocates the memory for this management object but not the memory shared between processes.
Definition: SharedMemory.cpp:140
 
void Dispose(void)
Removes the shared memory from the system. if this instance owns it.
Definition: SharedMemory.cpp:185
 
Ptr< T > Construct(const char *name, TArgs... args)
Creates a named object in the shared memory.
Definition: SharedMemory.hpp:119
 
bool CheckSanity(void)
Performs a sanity check over the shared memory.
Definition: SharedMemory.cpp:215
 
Ptr< T > ConstructUnnamed(TArgs... args)
Creates an unnamed object in the shared memory.
Definition: SharedMemory.hpp:141
 
Root namespace for the PLCnext API