@@ -26,17 +26,20 @@ 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
3435
36+ /* ! A base class for Message that enables type-erased pointer access */
3537class MessageBase {
3638 public:
37- messagePointerData pointers;
38- messagePointerData reference;
39+ messagePointerData pointers; // !< stores the message's header/payload pointers
40+ messagePointerData reference; // !< copy returned by GetPointers to avoid dangling
3941
42+ // ! Returns pointer to struct containing type-erased message header and payload pointers
4043 messagePointerData *GetPointers (void )
4144 {
4245 reference.payload = pointers.payload ;
@@ -45,15 +48,17 @@ class MessageBase{
4548 }
4649};
4750
51+ /* ! A base class for ReadFunctor that enables type-erased pointer access */
4852class ReadFunctorBase {
4953 public :
50- void *headerVoidPtr; // ! TODO: kludge to fix PITL, do we want to keep this member?
51- void *payloadVoidPtr;
52- messagePointerData reference;
54+ void *headerVoidPtr; // !< type-erased header pointer for external interface access
55+ void *payloadVoidPtr; // !< type-erased payload pointer for external interface access
56+ messagePointerData reference; // !< copy returned by GetPointers
5357
5458 // ! constructor
5559 ReadFunctorBase () : headerVoidPtr(NULL ), payloadVoidPtr(NULL ) {}
5660
61+ // ! Returns pointer to struct containing type-erased header and payload pointers
5762 messagePointerData *GetPointers (void )
5863 {
5964 reference.header = headerVoidPtr;
@@ -334,6 +339,8 @@ class Recorder : public SysModel{
334339 Recorder (void * message, uint64_t timeDiff = 0 ){
335340 this ->timeInterval = timeDiff;
336341
342+ // C messages store header followed immediately by payload in memory.
343+ // Advance past header to get payload pointer.
337344 auto * headerPtr = static_cast <MsgHeader*>(message);
338345 auto * payloadPtr = reinterpret_cast <messageType*>(headerPtr + 1 );
339346
0 commit comments