CMSDK 2.0.1
Cross-platform C++ base library and SDK for the Psyclone AIOS platform
Loading...
Searching...
No Matches
cmlabs::DataMapsMemory Class Reference

Accessor for the shared name/id maps and the request map. More...

#include <DataMapsMemory.h>

Public Member Functions

 DataMapsMemory (MasterMemory *master)
 ~DataMapsMemory ()
bool open ()
 Attach to the existing data-maps segment.
bool create (uint32 typesMaxCount, uint32 contextsMaxCount, uint32 tagsMaxCount, uint32 cranksMaxCount, uint32 requestsMaxCount)
 Create the segment (master only) with the given per-map capacities.
bool getMemoryUsage (uint64 &alloc, uint64 &usage)
 Report allocation/usage.
bool maintenance ()
 Periodic cleanup (e.g.
std::string printFriendlyHTML ()
std::string toXML ()
bool writeIDsToMsg (DataMessage *msg)
 Write all map names/ids into msg for cluster sync.
Type-level map (message type names ↔ uint16 ids)

Two-phase creation: createNewTypeLevel() reserves, confirm/cancel commits or rolls back; lookup* returns the sync status (0 absent, 1 in-sync, 2 ready).

bool writeTypeLevelsToMsg (DataMessage *msg)
bool confirmTypeLevelID (uint16 id)
bool cancelTypeLevelID (uint16 id)
bool createNewTypeLevel (uint16 id, const char *name, uint64 time, uint16 &existingID)
bool syncTypeLevels (DataMessage *msg)
bool getTypeLevelName (uint16 id, char *name, uint32 maxSize)
bool getTypeLevelID (const char *name, uint16 &id)
uint8 lookupTypeLevelID (const char *name, uint16 &id)
bool deleteTypeLevel (const char *name)
bool deleteTypeLevel (uint16 id)
uint64 getTypeLevelCreateTime (uint16 id)
std::string printAllTypes ()
Context-level map (context names ↔ uint16 ids); same two-phase pattern as types.
bool writeContextLevelsToMsg (DataMessage *msg)
bool confirmContextLevelID (uint16 id)
bool cancelContextLevelID (uint16 id)
bool createNewContextLevel (uint16 id, const char *name, uint64 time, uint16 &existingID)
bool syncContextLevels (DataMessage *msg)
bool getContextLevelName (uint16 id, char *name, uint32 maxSize)
bool getContextLevelID (const char *name, uint16 &id)
uint8 lookupContextLevelID (const char *name, uint16 &id)
bool deleteContextLevel (const char *name)
bool deleteContextLevel (uint16 id)
uint64 getContextLevelCreateTime (uint16 id)
std::string printAllContexts ()
Tag map (tag names ↔ uint32 ids); same two-phase pattern as types.
bool writeTagsToMsg (DataMessage *msg)
bool confirmTagID (uint32 id)
bool cancelTagID (uint32 id)
bool createNewTag (uint32 id, const char *name, uint64 time, uint32 &existingID)
bool syncTags (DataMessage *msg)
bool getTagName (uint32 id, char *name, uint32 maxSize)
bool getTagID (const char *name, uint32 &id)
uint8 lookupTagID (const char *name, uint32 &id)
bool deleteTag (const char *name)
bool deleteTag (uint32 id)
uint64 getTagCreateTime (uint32 id)
Crank map (crank callbacks/scripts ↔ uint16 ids); same two-phase pattern, with

extra fields for function, library filename, language and inline script.

bool writeCranksToMsg (DataMessage *msg)
bool confirmCrankID (uint16 id)
bool cancelCrankID (uint16 id)
bool createNewCrank (uint16 id, uint32 compID, const char *name, const char *function, const char *libraryFilename, const char *language, const char *script, uint64 time, uint16 &existingID)
bool syncCranks (DataMessage *msg)
bool getCrankName (uint16 id, char *name, uint32 maxSize)
bool getCrankFunction (uint16 id, char *function, uint32 maxSize)
bool getCrankLanguage (uint16 id, char *language, uint32 maxSize)
bool getCrankLibraryFilename (uint16 id, char *libraryFilename, uint32 maxSize)
bool getCrankID (const char *name, uint16 &id)
uint8 lookupCrankID (const char *name, uint16 &id)
uint32 getCrankCompID (uint16 id)
bool getCrankScript (uint16 id, char *script, uint32 maxSize)
bool deleteCrank (uint16 id)
bool deleteCrank (const char *name)
uint64 getCrankCreateTime (uint16 id)
Request map (cross-component request/reply tracking)

createNewRequest() allocates a transaction id; setRequestStatus() advances it through the REQ_* lifecycle (optionally attaching the temporal-memory id of the reply); waitForRequestReply() blocks the caller up to timeout ms until a terminal status.

bool createNewRequest (uint32 from, uint32 to, uint32 remoteID, uint32 &id)
bool getRequestInfo (uint32 id, uint32 &from, uint32 &to, uint32 &remoteID)
bool getRequestStatus (uint32 id, uint8 &status, uint64 &time, uint64 &msgID, uint64 &msgEOL)
bool setRequestStatus (uint32 id, uint8 status)
bool setRequestStatus (uint32 id, uint8 status, uint64 msgID, uint64 msgEOL)
bool waitForRequestReply (uint32 id, uint32 timeout, uint8 &status, uint64 &time, uint64 &msgID, uint64 &msgEOL)
bool deleteRequest (uint32 id)
uint32 getRequestCount ()

Detailed Description

Accessor for the shared name/id maps and the request map.

One instance per process (created by MemoryManager); master calls create(), others open(). All calls lock the segment's named cross-process mutex and re-attach when the segment was resized (serial check). The confirm/cancel method pairs implement two-phase, cluster-wide id allocation; sync* methods merge entries received from remote nodes.

uint16 id, existing;
dataMapsMemory->createNewTypeLevel(id, "Vision.Face", now, existing); // reserve
dataMapsMemory->confirmTypeLevelID(id); // commit
uint16 found; dataMapsMemory->getTypeLevelID("Vision.Face", found);

Definition at line 245 of file DataMapsMemory.h.

Constructor & Destructor Documentation

◆ DataMapsMemory()

cmlabs::DataMapsMemory::DataMapsMemory ( MasterMemory * master)
Parameters
masterSegment bookkeeping interface (borrowed, not owned).

Definition at line 9 of file DataMapsMemory.cpp.

◆ ~DataMapsMemory()

cmlabs::DataMapsMemory::~DataMapsMemory ( )

Definition at line 24 of file DataMapsMemory.cpp.

References cmlabs::utils::CloseSharedMemorySegment().

Member Function Documentation

◆ cancelContextLevelID()

bool cmlabs::DataMapsMemory::cancelContextLevelID ( uint16 id)

◆ cancelCrankID()

bool cmlabs::DataMapsMemory::cancelCrankID ( uint16 id)

◆ cancelTagID()

bool cmlabs::DataMapsMemory::cancelTagID ( uint32 id)

◆ cancelTypeLevelID()

bool cmlabs::DataMapsMemory::cancelTypeLevelID ( uint16 id)

◆ confirmContextLevelID()

bool cmlabs::DataMapsMemory::confirmContextLevelID ( uint16 id)

◆ confirmCrankID()

bool cmlabs::DataMapsMemory::confirmCrankID ( uint16 id)

◆ confirmTagID()

bool cmlabs::DataMapsMemory::confirmTagID ( uint32 id)

◆ confirmTypeLevelID()

bool cmlabs::DataMapsMemory::confirmTypeLevelID ( uint16 id)

◆ create()

bool cmlabs::DataMapsMemory::create ( uint32 typesMaxCount,
uint32 contextsMaxCount,
uint32 tagsMaxCount,
uint32 cranksMaxCount,
uint32 requestsMaxCount )

Create the segment (master only) with the given per-map capacities.

Returns
true on success.

Definition at line 62 of file DataMapsMemory.cpp.

◆ createNewContextLevel()

bool cmlabs::DataMapsMemory::createNewContextLevel ( uint16 id,
const char * name,
uint64 time,
uint16 & existingID )

◆ createNewCrank()

bool cmlabs::DataMapsMemory::createNewCrank ( uint16 id,
uint32 compID,
const char * name,
const char * function,
const char * libraryFilename,
const char * language,
const char * script,
uint64 time,
uint16 & existingID )

◆ createNewRequest()

bool cmlabs::DataMapsMemory::createNewRequest ( uint32 from,
uint32 to,
uint32 remoteID,
uint32 & id )

◆ createNewTag()

bool cmlabs::DataMapsMemory::createNewTag ( uint32 id,
const char * name,
uint64 time,
uint32 & existingID )

◆ createNewTypeLevel()

bool cmlabs::DataMapsMemory::createNewTypeLevel ( uint16 id,
const char * name,
uint64 time,
uint16 & existingID )

◆ deleteContextLevel() [1/2]

bool cmlabs::DataMapsMemory::deleteContextLevel ( const char * name)

◆ deleteContextLevel() [2/2]

bool cmlabs::DataMapsMemory::deleteContextLevel ( uint16 id)

◆ deleteCrank() [1/2]

bool cmlabs::DataMapsMemory::deleteCrank ( const char * name)

◆ deleteCrank() [2/2]

bool cmlabs::DataMapsMemory::deleteCrank ( uint16 id)

◆ deleteRequest()

bool cmlabs::DataMapsMemory::deleteRequest ( uint32 id)

◆ deleteTag() [1/2]

bool cmlabs::DataMapsMemory::deleteTag ( const char * name)

◆ deleteTag() [2/2]

bool cmlabs::DataMapsMemory::deleteTag ( uint32 id)

◆ deleteTypeLevel() [1/2]

bool cmlabs::DataMapsMemory::deleteTypeLevel ( const char * name)

◆ deleteTypeLevel() [2/2]

bool cmlabs::DataMapsMemory::deleteTypeLevel ( uint16 id)

◆ getContextLevelCreateTime()

uint64 cmlabs::DataMapsMemory::getContextLevelCreateTime ( uint16 id)

◆ getContextLevelID()

bool cmlabs::DataMapsMemory::getContextLevelID ( const char * name,
uint16 & id )

◆ getContextLevelName()

bool cmlabs::DataMapsMemory::getContextLevelName ( uint16 id,
char * name,
uint32 maxSize )

◆ getCrankCompID()

uint32 cmlabs::DataMapsMemory::getCrankCompID ( uint16 id)

◆ getCrankCreateTime()

uint64 cmlabs::DataMapsMemory::getCrankCreateTime ( uint16 id)

◆ getCrankFunction()

bool cmlabs::DataMapsMemory::getCrankFunction ( uint16 id,
char * function,
uint32 maxSize )

◆ getCrankID()

bool cmlabs::DataMapsMemory::getCrankID ( const char * name,
uint16 & id )

◆ getCrankLanguage()

bool cmlabs::DataMapsMemory::getCrankLanguage ( uint16 id,
char * language,
uint32 maxSize )

◆ getCrankLibraryFilename()

bool cmlabs::DataMapsMemory::getCrankLibraryFilename ( uint16 id,
char * libraryFilename,
uint32 maxSize )

◆ getCrankName()

bool cmlabs::DataMapsMemory::getCrankName ( uint16 id,
char * name,
uint32 maxSize )

◆ getCrankScript()

bool cmlabs::DataMapsMemory::getCrankScript ( uint16 id,
char * script,
uint32 maxSize )

◆ getMemoryUsage()

bool cmlabs::DataMapsMemory::getMemoryUsage ( uint64 & alloc,
uint64 & usage )

Report allocation/usage.

Returns
true on success.

Definition at line 44 of file DataMapsMemory.cpp.

References CHECKDATAMAPSMEMORYSERIAL.

◆ getRequestCount()

uint32 cmlabs::DataMapsMemory::getRequestCount ( )

◆ getRequestInfo()

bool cmlabs::DataMapsMemory::getRequestInfo ( uint32 id,
uint32 & from,
uint32 & to,
uint32 & remoteID )

◆ getRequestStatus()

bool cmlabs::DataMapsMemory::getRequestStatus ( uint32 id,
uint8 & status,
uint64 & time,
uint64 & msgID,
uint64 & msgEOL )

◆ getTagCreateTime()

uint64 cmlabs::DataMapsMemory::getTagCreateTime ( uint32 id)

◆ getTagID()

bool cmlabs::DataMapsMemory::getTagID ( const char * name,
uint32 & id )

◆ getTagName()

bool cmlabs::DataMapsMemory::getTagName ( uint32 id,
char * name,
uint32 maxSize )

◆ getTypeLevelCreateTime()

uint64 cmlabs::DataMapsMemory::getTypeLevelCreateTime ( uint16 id)

◆ getTypeLevelID()

bool cmlabs::DataMapsMemory::getTypeLevelID ( const char * name,
uint16 & id )

◆ getTypeLevelName()

bool cmlabs::DataMapsMemory::getTypeLevelName ( uint16 id,
char * name,
uint32 maxSize )

◆ lookupContextLevelID()

uint8 cmlabs::DataMapsMemory::lookupContextLevelID ( const char * name,
uint16 & id )

◆ lookupCrankID()

uint8 cmlabs::DataMapsMemory::lookupCrankID ( const char * name,
uint16 & id )

◆ lookupTagID()

uint8 cmlabs::DataMapsMemory::lookupTagID ( const char * name,
uint32 & id )

◆ lookupTypeLevelID()

uint8 cmlabs::DataMapsMemory::lookupTypeLevelID ( const char * name,
uint16 & id )

◆ maintenance()

bool cmlabs::DataMapsMemory::maintenance ( )

Periodic cleanup (e.g.

stale requests).

Returns
true on success.

Definition at line 113 of file DataMapsMemory.cpp.

References CHECKDATAMAPSMEMORYSERIAL.

Referenced by createNewRequest().

◆ open()

bool cmlabs::DataMapsMemory::open ( )

◆ printAllContexts()

std::string cmlabs::DataMapsMemory::printAllContexts ( )

◆ printAllTypes()

std::string cmlabs::DataMapsMemory::printAllTypes ( )

◆ printFriendlyHTML()

std::string cmlabs::DataMapsMemory::printFriendlyHTML ( )
Returns
HTML dump of all maps for monitoring UIs.

Definition at line 1312 of file DataMapsMemory.cpp.

References CHECKDATAMAPSMEMORYSERIAL, and cmlabs::GenericMemoryMap< T, ID >::PrintAllEntriesHTML().

◆ setRequestStatus() [1/2]

bool cmlabs::DataMapsMemory::setRequestStatus ( uint32 id,
uint8 status )

◆ setRequestStatus() [2/2]

bool cmlabs::DataMapsMemory::setRequestStatus ( uint32 id,
uint8 status,
uint64 msgID,
uint64 msgEOL )

◆ syncContextLevels()

bool cmlabs::DataMapsMemory::syncContextLevels ( DataMessage * msg)

◆ syncCranks()

bool cmlabs::DataMapsMemory::syncCranks ( DataMessage * msg)

◆ syncTags()

bool cmlabs::DataMapsMemory::syncTags ( DataMessage * msg)

◆ syncTypeLevels()

bool cmlabs::DataMapsMemory::syncTypeLevels ( DataMessage * msg)

◆ toXML()

std::string cmlabs::DataMapsMemory::toXML ( )
Returns
XML dump of all maps.

Definition at line 1331 of file DataMapsMemory.cpp.

References CHECKDATAMAPSMEMORYSERIAL, cmlabs::utils::StringFormat(), and cmlabs::GenericMemoryMap< T, ID >::ToXML().

◆ waitForRequestReply()

bool cmlabs::DataMapsMemory::waitForRequestReply ( uint32 id,
uint32 timeout,
uint8 & status,
uint64 & time,
uint64 & msgID,
uint64 & msgEOL )

◆ writeContextLevelsToMsg()

bool cmlabs::DataMapsMemory::writeContextLevelsToMsg ( DataMessage * msg)

◆ writeCranksToMsg()

bool cmlabs::DataMapsMemory::writeCranksToMsg ( DataMessage * msg)

◆ writeIDsToMsg()

bool cmlabs::DataMapsMemory::writeIDsToMsg ( DataMessage * msg)

Write all map names/ids into msg for cluster sync.

Returns
true on success.

Definition at line 375 of file DataMapsMemory.cpp.

References CHECKDATAMAPSMEMORYSERIAL, and cmlabs::GenericMemoryMap< T, ID >::WriteAllIDsToMsg().

◆ writeTagsToMsg()

bool cmlabs::DataMapsMemory::writeTagsToMsg ( DataMessage * msg)

◆ writeTypeLevelsToMsg()

bool cmlabs::DataMapsMemory::writeTypeLevelsToMsg ( DataMessage * msg)

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