@@ -26,18 +26,21 @@ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
2626#include < stdlib.h>
2727
2828
29+ /* ! Holds type-erased pointers to a message's header and payload */
2930struct messagePointerData {
30- void *header;
31- void *payload;
31+ void *header; // !< pointer to the message header
32+ void *payload; // !< pointer to the message payload
3233};
3334
3435typedef struct messagePointerData messagePointerData;
3536
37+ /* ! A base class for Message that enables type-erased pointer access */
3638class MessageBase {
3739 public:
38- messagePointerData pointers;
39- messagePointerData reference;
40+ messagePointerData pointers; // !< stores the message's header/payload pointers
41+ messagePointerData reference; // !< copy returned by GetPointers to avoid dangling
4042
43+ // ! Returns pointer to struct containing type-erased message header and payload pointers
4144 messagePointerData *GetPointers (void )
4245 {
4346 reference.payload = pointers.payload ;
@@ -46,15 +49,17 @@ class MessageBase{
4649 }
4750};
4851
52+ /* ! A base class for ReadFunctor that enables type-erased pointer access */
4953class ReadFunctorBase {
5054 public :
51- void *headerVoidPtr; // ! TODO: kludge to fix PITL, do we want to keep this member?
52- void *payloadVoidPtr;
53- messagePointerData reference;
55+ void *headerVoidPtr; // !< type-erased header pointer for external interface access
56+ void *payloadVoidPtr; // !< type-erased payload pointer for external interface access
57+ messagePointerData reference; // !< copy returned by GetPointers
5458
5559 // ! constructor
5660 ReadFunctorBase () : headerVoidPtr(NULL ), payloadVoidPtr(NULL ) {}
5761
62+ // ! Returns pointer to struct containing type-erased header and payload pointers
5863 messagePointerData *GetPointers (void )
5964 {
6065 reference.header = headerVoidPtr;
@@ -335,6 +340,8 @@ class Recorder : public SysModel{
335340 Recorder (void * message, uint64_t timeDiff = 0 ){
336341 this ->timeInterval = timeDiff;
337342
343+ // C messages store header followed immediately by payload in memory.
344+ // Advance past header to get payload pointer.
338345 auto * headerPtr = static_cast <MsgHeader*>(message);
339346 auto * payloadPtr = reinterpret_cast <messageType*>(headerPtr + 1 );
340347
0 commit comments