![]() |
MAK RTIspy API Documentation for HLA Evolved
|
The DtMessageFactory template can be instantiated to declare a message factory for a given message class. More...
Inheritance diagram for DtMessageFactory< T_Message, T_MessageKind, T_NetworkHeader >:
Collaboration diagram for DtMessageFactory< T_Message, T_MessageKind, T_NetworkHeader >:Public Types | |
| typedef T_Message *(* | DtReceiveMessageCreator )(const T_NetworkHeader *packet, MAKRti::DtBufferPtr buffer) |
| Function type for creating messages received from the network using the given message header and packet buffer. | |
| typedef T_Message *(* | DtSendMessageCreator )(MAKRti::DtBufferPtr buffer) |
| Function type for creating blank messages for sending. | |
| typedef std::map < T_MessageKind, DtReceiveMessageCreator > | DtReceiveCreatorMap |
| A map from message kind to a receive creator function. | |
| typedef std::map < T_MessageKind, DtSendMessageCreator > | DtSendCreatorMap |
| A map from message kind to a send creator function. | |
Public Member Functions | |
| DtMessageFactory () | |
| Constructor - Default. | |
| DtMessageFactory (const DtMessageFactory &orig) | |
| Constructor - Copy. | |
| ~DtMessageFactory () | |
| Destructor. | |
| DtMessageFactory & | operator= (const DtMessageFactory &orig) |
| Operator - Assignment. | |
| T_Message * | create (T_MessageKind kind, MAKRti::DtBufferPtr buffer=DtUSE_INTERNAL_BUFFER) |
| Create a blank message to be filled. | |
| T_Message * | create (const T_NetworkHeader *packet, MAKRti::DtBufferPtr buffer=DtUSE_INTERNAL_BUFFER) |
| When receiving, the RTI will use the first create message to construct a message based on its net type. | |
| DtSendMessageCreator | addSendCreator (T_MessageKind kind, DtSendMessageCreator creator) |
| Add to the factory a msg creation function used for sending messages. | |
| DtReceiveMessageCreator | addRecvCreator (T_MessageKind kind, DtReceiveMessageCreator creator) |
| Add to the factory a msg creation function used for receiving messages. | |
| void | addCreators (T_MessageKind kind, DtReceiveMessageCreator rCreator, DtSendMessageCreator sCreator) |
| Add both types of msg creators (for sending and receiving) at once. | |
| int | packetGood (const T_NetworkHeader *packet) const |
| Check that the message packet is good. | |
Static Public Member Functions | |
| static int | dfltPacketGood (const T_NetworkHeader *packet) |
| Default check for packet being good. | |
Protected Attributes | |
| DtSendCreatorMap | mySendCreators |
| A map of the send message creator functions. | |
| DtReceiveCreatorMap | myReceiveCreators |
| A map of the receive message creator functions. | |
The DtMessageFactory template can be instantiated to declare a message factory for a given message class.
The resulting message factory is used to create messages of specific message kinds. Typically, a base type is defined for a given message class and then specific factories are derived from it. Creator functions are added for each message kind. The factory can then be used to create a message for a specific message kind while only knowing about the higher level message class abstraction.
| T_Message | - the message class |
| T_MessageKind | - the message kind enumeration type |
| T_NetworkHeader | - The message network header class defines the network layout of the header portion of the message. |
| typedef std::map<T_MessageKind, DtReceiveMessageCreator> DtMessageFactory< T_Message, T_MessageKind, T_NetworkHeader >::DtReceiveCreatorMap |
A map from message kind to a receive creator function.
| typedef T_Message*(* DtMessageFactory< T_Message, T_MessageKind, T_NetworkHeader >::DtReceiveMessageCreator)(const T_NetworkHeader *packet, MAKRti::DtBufferPtr buffer) |
Function type for creating messages received from the network using the given message header and packet buffer.
| packet | - the memory containing the network message used to construct the message |
| buffer | - The memory used to store the constructed message; allocated if value is 0 |
| typedef std::map<T_MessageKind, DtSendMessageCreator> DtMessageFactory< T_Message, T_MessageKind, T_NetworkHeader >::DtSendCreatorMap |
A map from message kind to a send creator function.
| typedef T_Message*(* DtMessageFactory< T_Message, T_MessageKind, T_NetworkHeader >::DtSendMessageCreator)(MAKRti::DtBufferPtr buffer) |
Function type for creating blank messages for sending.
| buffer | - The memory used to store the constructed message; allocated if value is 0 |
| DtMessageFactory< T_Message, T_MessageKind, T_NetworkHeader >::DtMessageFactory | ( | ) |
Constructor - Default.
| DtMessageFactory< T_Message, T_MessageKind, T_NetworkHeader >::DtMessageFactory | ( | const DtMessageFactory< T_Message, T_MessageKind, T_NetworkHeader > & | orig | ) |
Constructor - Copy.
| DtMessageFactory< T_Message, T_MessageKind, T_NetworkHeader >::~DtMessageFactory | ( | ) |
Destructor.
| void DtMessageFactory< T_Message, T_MessageKind, T_NetworkHeader >::addCreators | ( | T_MessageKind | kind, |
| DtReceiveMessageCreator | rCreator, | ||
| DtSendMessageCreator | sCreator | ||
| ) |
Add both types of msg creators (for sending and receiving) at once.
| DtReceiveMessageCreator DtMessageFactory< T_Message, T_MessageKind, T_NetworkHeader >::addRecvCreator | ( | T_MessageKind | kind, |
| DtReceiveMessageCreator | creator | ||
| ) |
Add to the factory a msg creation function used for receiving messages.
The function must return a new'ed msg object which will be deleted by the user.
| kind | - creator will be used for messages of this kind |
| creator | - the creator function |
| return | - previous msg creation function (0 if none) which was replaced by the add |
| DtSendMessageCreator DtMessageFactory< T_Message, T_MessageKind, T_NetworkHeader >::addSendCreator | ( | T_MessageKind | kind, |
| DtSendMessageCreator | creator | ||
| ) |
Add to the factory a msg creation function used for sending messages.
The function must return a new'ed msg object which will be deleted by the user.
| kind | - creator will be used for messages of this kind |
| creator | - the creator function |
| return | - previous msg creation function (0 if none) which was replaced by the add |
| T_Message* DtMessageFactory< T_Message, T_MessageKind, T_NetworkHeader >::create | ( | T_MessageKind | kind, |
| MAKRti::DtBufferPtr | buffer = DtUSE_INTERNAL_BUFFER |
||
| ) |
Create a blank message to be filled.
| kind | - the message kind to create |
| buffer | - The memory used to store the constructed message; allocated if value is 0 |
| return | - constructed message or NULL if message kind doesn't have a creation function in the factory. |
| T_Message* DtMessageFactory< T_Message, T_MessageKind, T_NetworkHeader >::create | ( | const T_NetworkHeader * | packet, |
| MAKRti::DtBufferPtr | buffer = DtUSE_INTERNAL_BUFFER |
||
| ) |
When receiving, the RTI will use the first create message to construct a message based on its net type.
Note: Caller is responsible for deleting. Returns NULL if creation function is not in the factory. Create a message from the provided network packet.
| packet | - the message packet used to create the message; the packet must contain a message header and the message kind is extracted from it. |
| buffer | - The memory used to store the constructed message; allocated if value is 0 |
| return | - constructed message or NULL if message kind doesn't have a creation function in the factory. |
|
static |
Default check for packet being good.
| DtMessageFactory& DtMessageFactory< T_Message, T_MessageKind, T_NetworkHeader >::operator= | ( | const DtMessageFactory< T_Message, T_MessageKind, T_NetworkHeader > & | orig | ) |
Operator - Assignment.
| int DtMessageFactory< T_Message, T_MessageKind, T_NetworkHeader >::packetGood | ( | const T_NetworkHeader * | packet | ) | const |
Check that the message packet is good.
|
protected |
A map of the receive message creator functions.
|
protected |
A map of the send message creator functions.