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

Object type ids used to tag and verify every binary structure in CMSDK memory. More...

#include "Types.h"
Include dependency graph for ObjectIDs.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  cmlabs

Macros

#define GenObjID(n)
 Generate a self-verifying object id from a small type number: the number is duplicated in the high and low 16 bits.
#define VerObjID(id)
 Verify an object id's internal redundancy (both halves must agree and the id must be non-zero).
#define GetObjID(data)
 Extract the cid field from a binary object block: the uint32 at byte offset 4 (after the leading size field).
#define VerObj(data)
 Extract and verify the cid of a binary object block in one step.
Built-in object type ids

Ids for the core value types stored inside DataMessages (UNUSEDID..CHARDATAINFOID), the shared-memory subsystems, and the message/spec structures.

The ...INFOID variants mark "draft" placeholder entries carrying only name+size instead of the full payload (see DataMessage draft constructors).

#define UNUSEDID   GenObjID( 1 )
#define CONSTCHARID   GenObjID( 2 )
#define TIMEID   GenObjID( 3 )
#define CHARDATAID   GenObjID( 4 )
#define INTID   GenObjID( 5 )
#define DOUBLEID   GenObjID( 6 )
#define CONSTCHARINFOID   GenObjID( 7 )
#define CHARDATAINFOID   GenObjID( 8 )
#define PSYCLONEINDEXID   GenObjID( 10 )
#define PSYCLONEMASTERID   GenObjID( 11 )
#define TEMPORALMEMORYID   GenObjID( 12 )
#define PROCESSMEMORYID   GenObjID( 13 )
#define COMPONENTMEMORYID   GenObjID( 14 )
#define DATAMAPSMEMORYID   GenObjID( 15 )
#define DATAMESSAGEOLDID   GenObjID( 20 )
#define CONTROLMESSAGEID   GenObjID( 21 )
#define LOGENTRYID   GenObjID( 22 )
#define TIMESYNCDATA   GenObjID( 23 )
#define TRIGGERDATA   GenObjID( 24 )
#define RETRIEVEDATA   GenObjID( 25 )
#define POSTDATA   GenObjID( 26 )
#define COMPONENTSETUPDATA   GenObjID( 27 )
#define IDRESERVATION   GenObjID( 28 )
#define TYPELEVELID   GenObjID( 29 )
#define CONTEXTLEVELID   GenObjID( 30 )
#define CRANKID   GenObjID( 31 )
#define COMPONENTID   GenObjID( 32 )
#define TAGID   GenObjID( 33 )
#define NODEINFOPACKID   GenObjID( 34 )
#define NODEMAPID   GenObjID( 35 )
#define DATAMESSAGEINFOID   GenObjID( 36 )
#define DATAMESSAGEDRAFTID   GenObjID( 37 )
#define MEMORYREQUESTSERVERID   GenObjID( 38 )
#define DYNAMICMEMORYID   GenObjID( 39 )
#define OBSERVATIONID   GenObjID( 40 )
#define DATAMESSAGEID   GenObjID( 41 )

Variables

Built-in control message types

Predefined PsyType values (root level 1 = control) used by the runtime itself for self-test, log printing and ping/pong liveness checks.

static struct PsyType cmlabs::CTRL_TEST = { { 1,10001,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } }
static struct PsyType cmlabs::CTRL_LOGPRINT = { { 1,10002,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } }
static struct PsyType cmlabs::CTRL_PING = { { 1,10003,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } }
static struct PsyType cmlabs::CTRL_PING_REPLY = { { 1,10004,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } }

Detailed Description

Object type ids used to tag and verify every binary structure in CMSDK memory.

Every flat binary object in Psyclone (messages, memory maps, index entries, specs, ...) carries a uint32 cid field at byte offset 4 identifying what the block is. The ids are generated by GenObjID(n), which stores the small type number redundantly in the low and high 16 bits so that a corrupted or misaligned block can be detected cheaply (VerObjID). This is the first line of defence when reading structures out of shared memory, network buffers or recordings.

Definition in file ObjectIDs.h.

Macro Definition Documentation

◆ CHARDATAID

◆ CHARDATAINFOID

◆ COMPONENTID

#define COMPONENTID   GenObjID( 32 )

Definition at line 65 of file ObjectIDs.h.

◆ COMPONENTMEMORYID

#define COMPONENTMEMORYID   GenObjID( 14 )

Definition at line 50 of file ObjectIDs.h.

Referenced by cmlabs::ComponentMemory::create(), and cmlabs::ComponentMemory::open().

◆ COMPONENTSETUPDATA

#define COMPONENTSETUPDATA   GenObjID( 27 )

Definition at line 60 of file ObjectIDs.h.

Referenced by cmlabs::ComponentSetup::reset().

◆ CONSTCHARID

#define CONSTCHARID   GenObjID( 2 )

Definition at line 38 of file ObjectIDs.h.

Referenced by cmlabs::DataMessage::copyUserEntriesFromMessage(), cmlabs::ExtractStringFromMessage(), cmlabs::DataMessage::fillInDraftUserDataFrom(), cmlabs::DataMessage::findKey(), cmlabs::DataMessage::getArraySize(), cmlabs::DataMessage::getAsBool(), cmlabs::DataMessage::getAsFloatArray(), cmlabs::DataMessage::getAsFloatMap(), cmlabs::DataMessage::getAsIntArray(), cmlabs::DataMessage::getAsIntMap(), cmlabs::DataMessage::getAsString(), cmlabs::DataMessage::getAsStringArray(), cmlabs::DataMessage::getAsStringMap(), cmlabs::DataMessage::getAttachedMessageArray(), cmlabs::DataMessage::getAttachedMessageMap(), cmlabs::GetDataTypeID(), cmlabs::GetDataTypeName(), cmlabs::DataMessage::getDoubleArray(), cmlabs::DataMessage::getDoubleMap(), cmlabs::DataMessage::getFloatArray(), cmlabs::DataMessage::getFloatMap(), cmlabs::DataMessage::getIntArray(), cmlabs::DataMessage::getIntMap(), cmlabs::DataMessage::getKeyType(), cmlabs::DataMessage::getMapSize(), cmlabs::DataMessage::getString(), cmlabs::DataMessage::getString(), cmlabs::DataMessage::getStringArray(), cmlabs::DataMessage::getStringMap(), cmlabs::DataMessage::getTimeArray(), cmlabs::DataMessage::getTimeMap(), cmlabs::DataMessage::getUserEntriesAsJSON(), cmlabs::DataMessage::getUserEntriesAsString(), cmlabs::DataMessage::hasString(), cmlabs::DataMessage::isArrayContent(), cmlabs::DataMessage::isMapContent(), cmlabs::DataMessage::setRawData(), cmlabs::DataMessage::setString(), cmlabs::DataMessage::toJSON(), cmlabs::DataMessage::toXML(), and cmlabs::DataMessage::UnitTest().

◆ CONSTCHARINFOID

◆ CONTEXTLEVELID

#define CONTEXTLEVELID   GenObjID( 30 )

Definition at line 63 of file ObjectIDs.h.

◆ CONTROLMESSAGEID

#define CONTROLMESSAGEID   GenObjID( 21 )

Definition at line 54 of file ObjectIDs.h.

Referenced by cmlabs::ControlMessage::ControlMessage().

◆ CRANKID

#define CRANKID   GenObjID( 31 )

Definition at line 64 of file ObjectIDs.h.

◆ DATAMAPSMEMORYID

#define DATAMAPSMEMORYID   GenObjID( 15 )

Definition at line 51 of file ObjectIDs.h.

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

◆ DATAMESSAGEDRAFTID

◆ DATAMESSAGEID

#define DATAMESSAGEID   GenObjID( 41 )

Definition at line 75 of file ObjectIDs.h.

Referenced by cmlabs::DataMessage::addTimeUsage(), cmlabs::MessageProtocol::CheckBufferForCompatibility(), cmlabs::DataMessage::ConvertDataFromOlderMessageFormat(), cmlabs::DataMessage::copyUserEntriesFromMessage(), cmlabs::DataMessage::DataMessage(), cmlabs::DataMessage::DataMessage(), cmlabs::DataMessage::DataMessage(), cmlabs::DataMessage::DataMessage(), cmlabs::DataMessage::DataMessage(), cmlabs::DataMessage::DataMessage(), cmlabs::DataMessage::DataMessage(), cmlabs::DataMessage::DataMessage(), cmlabs::DataMessage::DataMessage(), cmlabs::DataMessage::deleteEntry(), cmlabs::DataMessage::fillInDraftUserDataFrom(), cmlabs::DataMessage::findKey(), cmlabs::DataMessage::findSpace(), cmlabs::DataMessage::getArraySize(), cmlabs::DataMessage::getAsBool(), cmlabs::DataMessage::getAsFloatArray(), cmlabs::DataMessage::getAsFloatMap(), cmlabs::DataMessage::getAsIntArray(), cmlabs::DataMessage::getAsIntMap(), cmlabs::DataMessage::getAsString(), cmlabs::DataMessage::getAsStringArray(), cmlabs::DataMessage::getAsStringMap(), cmlabs::DataMessage::getAttachedMessageArray(), cmlabs::DataMessage::getAttachedMessageCopy(), cmlabs::DataMessage::getAttachedMessageMap(), cmlabs::DataMessage::getChainCount(), cmlabs::DataMessage::getChainCPUTime(), cmlabs::DataMessage::getChainWallTime(), cmlabs::DataMessage::getContextChange(), cmlabs::DataMessage::getCreatedTime(), cmlabs::DataMessage::getCycleCPUTime(), cmlabs::DataMessage::getCycleWallTime(), cmlabs::GetDataTypeID(), cmlabs::GetDataTypeName(), cmlabs::DataMessage::getDestination(), cmlabs::DataMessage::getDoubleArray(), cmlabs::DataMessage::getDoubleMap(), cmlabs::DataMessage::getEOL(), cmlabs::DataMessage::getFloatArray(), cmlabs::DataMessage::getFloatMap(), cmlabs::DataMessage::getFrom(), cmlabs::DataMessage::getIntArray(), cmlabs::DataMessage::getIntMap(), cmlabs::DataMessage::getKeyType(), cmlabs::DataMessage::getMapSize(), cmlabs::DataMessage::getMemID(), cmlabs::DataMessage::getOrigin(), cmlabs::DataMessage::getPolicy(), cmlabs::DataMessage::getPriority(), cmlabs::DataMessage::getRawData(), cmlabs::DataMessage::getRecvTime(), cmlabs::DataMessage::getReference(), cmlabs::DataMessage::getSendTime(), cmlabs::DataMessage::getSerial(), cmlabs::DataMessage::getSize(), cmlabs::DataMessage::getStatus(), cmlabs::DataMessage::getStringArray(), cmlabs::DataMessage::getStringMap(), cmlabs::DataMessage::getSystemID(), cmlabs::DataMessage::getTag(), cmlabs::DataMessage::getTimeArray(), cmlabs::DataMessage::getTimeMap(), cmlabs::DataMessage::getTo(), cmlabs::DataMessage::getTTL(), cmlabs::DataMessage::getType(), cmlabs::DataMessage::getUserEntriesAsJSON(), cmlabs::DataMessage::getUserEntriesAsString(), cmlabs::DataMessage::hasMessage(), cmlabs::DataMessage::isArrayContent(), cmlabs::DataMessage::isMapContent(), cmlabs::DataMessage::isValid(), cmlabs::MessageProtocol::ReceiveMessage(), cmlabs::PsyAPI::retrieve(), cmlabs::DataMessage::setAttachedMessage(), cmlabs::DataMessage::setChainCount(), cmlabs::DataMessage::setChainCPUTime(), cmlabs::DataMessage::setChainWallTime(), cmlabs::DataMessage::setContextChange(), cmlabs::DataMessage::setCreatedTime(), cmlabs::DataMessage::setCycleCPUTime(), cmlabs::DataMessage::setCycleWallTime(), cmlabs::DataMessage::setDestination(), cmlabs::DataMessage::setEOL(), cmlabs::DataMessage::setFrom(), cmlabs::DataMessage::setMemID(), cmlabs::DataMessage::setMultiple(), cmlabs::DataMessage::setOrigin(), cmlabs::DataMessage::setPolicy(), cmlabs::DataMessage::setPriority(), cmlabs::DataMessage::setRecvTime(), cmlabs::DataMessage::setReference(), cmlabs::DataMessage::setSendTime(), cmlabs::DataMessage::setSerial(), cmlabs::DataMessage::setStatus(), cmlabs::DataMessage::setSystemID(), cmlabs::DataMessage::setTag(), cmlabs::DataMessage::setTo(), cmlabs::DataMessage::setTTL(), cmlabs::DataMessage::setType(), cmlabs::DataMessage::toJSON(), cmlabs::DataMessageHeader::toJSON(), cmlabs::DataMessage::toXML(), cmlabs::DataMessageHeader::toXML(), cmlabs::DataMessage::UnitTest(), and cmlabs::MessageIndex::UnitTest().

◆ DATAMESSAGEINFOID

◆ DATAMESSAGEOLDID

◆ DOUBLEID

◆ DYNAMICMEMORYID

#define DYNAMICMEMORYID   GenObjID( 39 )

Definition at line 73 of file ObjectIDs.h.

◆ GenObjID

#define GenObjID ( n)
Value:
(((n) << 16) | n)

Generate a self-verifying object id from a small type number: the number is duplicated in the high and low 16 bits.

Definition at line 22 of file ObjectIDs.h.

◆ GetObjID

◆ IDRESERVATION

#define IDRESERVATION   GenObjID( 28 )

Definition at line 61 of file ObjectIDs.h.

◆ INTID

◆ LOGENTRYID

#define LOGENTRYID   GenObjID( 22 )

◆ MEMORYREQUESTSERVERID

#define MEMORYREQUESTSERVERID   GenObjID( 38 )

Definition at line 72 of file ObjectIDs.h.

Referenced by cmlabs::MemoryRequestServer::init().

◆ NODEINFOPACKID

#define NODEINFOPACKID   GenObjID( 34 )

Definition at line 67 of file ObjectIDs.h.

◆ NODEMAPID

#define NODEMAPID   GenObjID( 35 )

Definition at line 68 of file ObjectIDs.h.

◆ OBSERVATIONID

◆ POSTDATA

#define POSTDATA   GenObjID( 26 )

Definition at line 59 of file ObjectIDs.h.

◆ PROCESSMEMORYID

#define PROCESSMEMORYID   GenObjID( 13 )

Definition at line 49 of file ObjectIDs.h.

Referenced by cmlabs::ProcessMemory::create(), and cmlabs::ProcessMemory::open().

◆ PSYCLONEINDEXID

#define PSYCLONEINDEXID   GenObjID( 10 )

Definition at line 46 of file ObjectIDs.h.

Referenced by cmlabs::PsycloneIndex::init().

◆ PSYCLONEMASTERID

#define PSYCLONEMASTERID   GenObjID( 11 )

Definition at line 47 of file ObjectIDs.h.

Referenced by cmlabs::MasterMemory::create(), and cmlabs::MasterMemory::open().

◆ RETRIEVEDATA

#define RETRIEVEDATA   GenObjID( 25 )

Definition at line 58 of file ObjectIDs.h.

◆ TAGID

#define TAGID   GenObjID( 33 )

Definition at line 66 of file ObjectIDs.h.

◆ TEMPORALMEMORYID

#define TEMPORALMEMORYID   GenObjID( 12 )

Definition at line 48 of file ObjectIDs.h.

Referenced by cmlabs::TemporalMemory::create(), and cmlabs::TemporalMemory::open().

◆ TIMEID

◆ TIMESYNCDATA

#define TIMESYNCDATA   GenObjID( 23 )

Definition at line 56 of file ObjectIDs.h.

◆ TRIGGERDATA

#define TRIGGERDATA   GenObjID( 24 )

Definition at line 57 of file ObjectIDs.h.

Referenced by cmlabs::TriggerSpec::reset().

◆ TYPELEVELID

#define TYPELEVELID   GenObjID( 29 )

Definition at line 62 of file ObjectIDs.h.

◆ UNUSEDID

#define UNUSEDID   GenObjID( 1 )

Definition at line 37 of file ObjectIDs.h.

Referenced by cmlabs::DataMessage::findSpace(), and cmlabs::DataMessage::removeEntry().

◆ VerObj

#define VerObj ( data)
Value:
#define GetObjID(data)
Extract the cid field from a binary object block: the uint32 at byte offset 4 (after the leading size...
Definition ObjectIDs.h:26
#define VerObjID(id)
Verify an object id's internal redundancy (both halves must agree and the id must be non-zero).
Definition ObjectIDs.h:24

Extract and verify the cid of a binary object block in one step.

Definition at line 28 of file ObjectIDs.h.

Referenced by cmlabs::ControlMessage::getCommand(), cmlabs::ControlMessage::getFrom(), cmlabs::ControlMessage::getSize(), cmlabs::ControlMessage::getStatus(), cmlabs::ControlMessage::getTime(), cmlabs::ControlMessage::getTo(), and cmlabs::ControlMessage::setStatus().

◆ VerObjID

#define VerObjID ( id)
Value:
( (id != 0) && ((((id) & 0xFF00) >> 16) == ((id) & 0x00FF)) )

Verify an object id's internal redundancy (both halves must agree and the id must be non-zero).

Definition at line 24 of file ObjectIDs.h.