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

Shared-memory name/id maps: message types, contexts, tags, cranks and cross-process requests. More...

#include "MemoryManager.h"
#include "PsyTime.h"
#include "MemoryMaps.tpl.h"
Include dependency graph for DataMapsMemory.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  cmlabs::DataMapsMemoryStruct
 Root header of the data-maps segment; records capacity/size of each contained map. More...
struct  cmlabs::GenericMapHeader
 Common header of every map inside the data-maps segment. More...
struct  cmlabs::TypeMapEntry
 Type-map entry: one registered message type name/id. More...
struct  cmlabs::ContextMapEntry
 Context-map entry: one registered psychological/system context name/id. More...
struct  cmlabs::TagMapEntry
 Tag-map entry: one registered tag name/id. More...
struct  cmlabs::CrankMapEntry
 Crank-map entry: one registered crank (user callback/script) with its function, library and inline script. More...
struct  cmlabs::RequestMapEntry
 Request-map entry tracking one cross-component request/reply transaction. More...
class  cmlabs::DataMapsMemory
 Accessor for the shared name/id maps and the request map. More...
class  cmlabs::GenericMemoryMap< T, ID >
 Static algorithms shared by all bitfield-indexed maps in the data-maps segment. More...

Namespaces

namespace  cmlabs

Macros

#define CHECKDATAMAPSMEMORYSERIAL   if (serial != master->getDataMapsShmemSerial()) {if (!open()) {mutex->leave();return 0;}}
 Re-open the data-maps segment if the master's resize serial no longer matches ours; bails out of the calling method (returning 0) on failure.
Request lifecycle status values (RequestMapEntry::status)

A request travels created → received → processing → reply-ready → success/failure; _LOCAL/_REMOTE distinguish same-node vs cross-node processing, _DATA/_NODATA whether a reply payload exists, and _EOL that the payload has already expired from temporal memory.

#define REQ_CREATED   1
#define REQ_RECEIVED_LOCAL   2
#define REQ_RECEIVED_REMOTE   3
#define REQ_PROCESSING_LOCAL   4
#define REQ_PROCESSING_REMOTE   5
#define REQ_REPLY_READY   6
#define REQ_FAILED_TO_SEND   7
#define REQ_FAILED   8
#define REQ_FAILED_DATA   9
#define REQ_FAILED_NODATA   10
#define REQ_FAILED_DATA_EOL   11
#define REQ_SUCCESS   12
#define REQ_SUCCESS_DATA   13
#define REQ_SUCCESS_NODATA   14
#define REQ_SUCCESS_DATA_EOL   15

Detailed Description

Shared-memory name/id maps: message types, contexts, tags, cranks and cross-process requests.

Psyclone identifies message types, contexts, tags and cranks by small integer ids that must agree across every process and node. This segment holds five bitfield-indexed maps (GenericMapHeader + fixed-size entries) that translate names to ids and back, plus the request map used to track cross-component request/reply transactions. Entries are created in a two-phase manner (create → confirm/cancel) so ids can be negotiated cluster-wide before being marked ready (status: 0 absent, 1 in-sync, 2 ready).

The GenericMemoryMap template at the bottom implements the shared map algorithms once for all entry types (see MemoryMaps.tpl.h).

Warning
Shared-memory layouts; changing any struct here requires a full rebuild of all binaries (make clean && make) — see MemoryManager.h for the ABI warning.

Definition in file DataMapsMemory.h.

Macro Definition Documentation

◆ CHECKDATAMAPSMEMORYSERIAL

#define CHECKDATAMAPSMEMORYSERIAL   if (serial != master->getDataMapsShmemSerial()) {if (!open()) {mutex->leave();return 0;}}

Re-open the data-maps segment if the master's resize serial no longer matches ours; bails out of the calling method (returning 0) on failure.

Definition at line 230 of file DataMapsMemory.h.

Referenced by cmlabs::DataMapsMemory::cancelContextLevelID(), cmlabs::DataMapsMemory::cancelCrankID(), cmlabs::DataMapsMemory::cancelTagID(), cmlabs::DataMapsMemory::cancelTypeLevelID(), cmlabs::DataMapsMemory::confirmContextLevelID(), cmlabs::DataMapsMemory::confirmCrankID(), cmlabs::DataMapsMemory::confirmTagID(), cmlabs::DataMapsMemory::confirmTypeLevelID(), cmlabs::DataMapsMemory::createNewContextLevel(), cmlabs::DataMapsMemory::createNewCrank(), cmlabs::DataMapsMemory::createNewRequest(), cmlabs::DataMapsMemory::createNewTag(), cmlabs::DataMapsMemory::createNewTypeLevel(), cmlabs::DataMapsMemory::deleteContextLevel(), cmlabs::DataMapsMemory::deleteContextLevel(), cmlabs::DataMapsMemory::deleteCrank(), cmlabs::DataMapsMemory::deleteCrank(), cmlabs::DataMapsMemory::deleteRequest(), cmlabs::DataMapsMemory::deleteTag(), cmlabs::DataMapsMemory::deleteTag(), cmlabs::DataMapsMemory::deleteTypeLevel(), cmlabs::DataMapsMemory::deleteTypeLevel(), cmlabs::DataMapsMemory::getContextLevelCreateTime(), cmlabs::DataMapsMemory::getContextLevelID(), cmlabs::DataMapsMemory::getContextLevelName(), cmlabs::DataMapsMemory::getCrankCompID(), cmlabs::DataMapsMemory::getCrankCreateTime(), cmlabs::DataMapsMemory::getCrankFunction(), cmlabs::DataMapsMemory::getCrankID(), cmlabs::DataMapsMemory::getCrankLanguage(), cmlabs::DataMapsMemory::getCrankLibraryFilename(), cmlabs::DataMapsMemory::getCrankName(), cmlabs::DataMapsMemory::getCrankScript(), cmlabs::DataMapsMemory::getMemoryUsage(), cmlabs::DataMapsMemory::getRequestCount(), cmlabs::DataMapsMemory::getRequestInfo(), cmlabs::DataMapsMemory::getRequestStatus(), cmlabs::DataMapsMemory::getTagCreateTime(), cmlabs::DataMapsMemory::getTagID(), cmlabs::DataMapsMemory::getTagName(), cmlabs::DataMapsMemory::getTypeLevelCreateTime(), cmlabs::DataMapsMemory::getTypeLevelID(), cmlabs::DataMapsMemory::getTypeLevelName(), cmlabs::DataMapsMemory::lookupContextLevelID(), cmlabs::DataMapsMemory::lookupCrankID(), cmlabs::DataMapsMemory::lookupTagID(), cmlabs::DataMapsMemory::lookupTypeLevelID(), cmlabs::DataMapsMemory::maintenance(), cmlabs::DataMapsMemory::printAllContexts(), cmlabs::DataMapsMemory::printAllTypes(), cmlabs::DataMapsMemory::printFriendlyHTML(), cmlabs::DataMapsMemory::setRequestStatus(), cmlabs::DataMapsMemory::setRequestStatus(), cmlabs::DataMapsMemory::toXML(), cmlabs::DataMapsMemory::waitForRequestReply(), cmlabs::DataMapsMemory::writeContextLevelsToMsg(), cmlabs::DataMapsMemory::writeCranksToMsg(), cmlabs::DataMapsMemory::writeIDsToMsg(), cmlabs::DataMapsMemory::writeTagsToMsg(), and cmlabs::DataMapsMemory::writeTypeLevelsToMsg().

◆ REQ_CREATED

#define REQ_CREATED   1

Definition at line 190 of file DataMapsMemory.h.

Referenced by cmlabs::DataMapsMemory::createNewRequest().

◆ REQ_FAILED

#define REQ_FAILED   8

Definition at line 197 of file DataMapsMemory.h.

Referenced by cmlabs::PsySpace::query(), and cmlabs::PsySpace::queryReply().

◆ REQ_FAILED_DATA

#define REQ_FAILED_DATA   9

Definition at line 198 of file DataMapsMemory.h.

◆ REQ_FAILED_DATA_EOL

#define REQ_FAILED_DATA_EOL   11

Definition at line 200 of file DataMapsMemory.h.

Referenced by cmlabs::PsySpace::queryReply().

◆ REQ_FAILED_NODATA

#define REQ_FAILED_NODATA   10

Definition at line 199 of file DataMapsMemory.h.

◆ REQ_FAILED_TO_SEND

#define REQ_FAILED_TO_SEND   7

Definition at line 196 of file DataMapsMemory.h.

Referenced by cmlabs::PsySpace::query().

◆ REQ_PROCESSING_LOCAL

#define REQ_PROCESSING_LOCAL   4

Definition at line 193 of file DataMapsMemory.h.

Referenced by cmlabs::PsySpace::query().

◆ REQ_PROCESSING_REMOTE

#define REQ_PROCESSING_REMOTE   5

Definition at line 194 of file DataMapsMemory.h.

Referenced by cmlabs::PsySpace::query().

◆ REQ_RECEIVED_LOCAL

#define REQ_RECEIVED_LOCAL   2

Definition at line 191 of file DataMapsMemory.h.

◆ REQ_RECEIVED_REMOTE

#define REQ_RECEIVED_REMOTE   3

Definition at line 192 of file DataMapsMemory.h.

◆ REQ_REPLY_READY

#define REQ_REPLY_READY   6

Definition at line 195 of file DataMapsMemory.h.

Referenced by cmlabs::DataMapsMemory::waitForRequestReply().

◆ REQ_SUCCESS

#define REQ_SUCCESS   12

Definition at line 201 of file DataMapsMemory.h.

Referenced by cmlabs::PsySpace::query(), and cmlabs::PsySpace::queryReply().

◆ REQ_SUCCESS_DATA

#define REQ_SUCCESS_DATA   13

Definition at line 202 of file DataMapsMemory.h.

◆ REQ_SUCCESS_DATA_EOL

#define REQ_SUCCESS_DATA_EOL   15

Definition at line 204 of file DataMapsMemory.h.

Referenced by cmlabs::PsySpace::queryReply().

◆ REQ_SUCCESS_NODATA

#define REQ_SUCCESS_NODATA   14

Definition at line 203 of file DataMapsMemory.h.