MAK RTIspy API Documentation for HLA 1516
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Types | Public Member Functions | Static Public Member Functions | Protected Attributes
DtMessageFactory< T_Message, T_MessageKind, T_NetworkHeader > Class Template Reference

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. More...
 
typedef T_Message *(* DtSendMessageCreator )(MAKRti::DtBufferPtr buffer)
 Function type for creating blank messages for sending. More...
 
typedef std::map
< T_MessageKind,
DtReceiveMessageCreator
DtReceiveCreatorMap
 A map from message kind to a receive creator function. More...
 
typedef std::map
< T_MessageKind,
DtSendMessageCreator
DtSendCreatorMap
 A map from message kind to a send creator function. More...
 

Public Member Functions

 DtMessageFactory ()
 Constructor - Default. More...
 
 DtMessageFactory (const DtMessageFactory &orig)
 Constructor - Copy. More...
 
 ~DtMessageFactory ()
 Destructor. More...
 
DtMessageFactoryoperator= (const DtMessageFactory &orig)
 Operator - Assignment. More...
 
T_Message * create (T_MessageKind kind, MAKRti::DtBufferPtr buffer=DtUSE_INTERNAL_BUFFER)
 Create a blank message to be filled. More...
 
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. More...
 
DtSendMessageCreator addSendCreator (T_MessageKind kind, DtSendMessageCreator creator)
 Add to the factory a msg creation function used for sending messages. More...
 
DtReceiveMessageCreator addRecvCreator (T_MessageKind kind, DtReceiveMessageCreator creator)
 Add to the factory a msg creation function used for receiving messages. More...
 
void addCreators (T_MessageKind kind, DtReceiveMessageCreator rCreator, DtSendMessageCreator sCreator)
 Add both types of msg creators (for sending and receiving) at once. More...
 
int packetGood (const T_NetworkHeader *packet) const
 Check that the message packet is good. More...
 

Static Public Member Functions

static int dfltPacketGood (const T_NetworkHeader *packet)
 Default check for packet being good. More...
 

Protected Attributes

DtSendCreatorMap mySendCreators
 A map of the send message creator functions. More...
 
DtReceiveCreatorMap myReceiveCreators
 A map of the receive message creator functions. More...
 

Detailed Description

template<typename T_Message, typename T_MessageKind, typename T_NetworkHeader>
class DtMessageFactory< T_Message, T_MessageKind, T_NetworkHeader >

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.

Parameters
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.

Member Typedef Documentation

template<typename T_Message , typename T_MessageKind , typename T_NetworkHeader >
typedef std::map<T_MessageKind, DtReceiveMessageCreator> DtMessageFactory< T_Message, T_MessageKind, T_NetworkHeader >::DtReceiveCreatorMap

A map from message kind to a receive creator function.

template<typename T_Message , typename T_MessageKind , typename T_NetworkHeader >
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.

Parameters
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
template<typename T_Message , typename T_MessageKind , typename T_NetworkHeader >
typedef std::map<T_MessageKind, DtSendMessageCreator> DtMessageFactory< T_Message, T_MessageKind, T_NetworkHeader >::DtSendCreatorMap

A map from message kind to a send creator function.

template<typename T_Message , typename T_MessageKind , typename T_NetworkHeader >
typedef T_Message*(* DtMessageFactory< T_Message, T_MessageKind, T_NetworkHeader >::DtSendMessageCreator)(MAKRti::DtBufferPtr buffer)

Function type for creating blank messages for sending.

Parameters
buffer- The memory used to store the constructed message; allocated if value is 0

Constructor & Destructor Documentation

template<typename T_Message , typename T_MessageKind , typename T_NetworkHeader >
DtMessageFactory< T_Message, T_MessageKind, T_NetworkHeader >::DtMessageFactory ( )

Constructor - Default.

template<typename T_Message , typename T_MessageKind , typename T_NetworkHeader >
DtMessageFactory< T_Message, T_MessageKind, T_NetworkHeader >::DtMessageFactory ( const DtMessageFactory< T_Message, T_MessageKind, T_NetworkHeader > &  orig)

Constructor - Copy.

template<typename T_Message , typename T_MessageKind , typename T_NetworkHeader >
DtMessageFactory< T_Message, T_MessageKind, T_NetworkHeader >::~DtMessageFactory ( )

Destructor.

Member Function Documentation

template<typename T_Message , typename T_MessageKind , typename T_NetworkHeader >
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.

Warning
Any previous msg creation functions are overwritten.
template<typename T_Message , typename T_MessageKind , typename T_NetworkHeader >
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.

Parameters
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
template<typename T_Message , typename T_MessageKind , typename T_NetworkHeader >
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.

Parameters
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
template<typename T_Message , typename T_MessageKind , typename T_NetworkHeader >
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.

Parameters
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.
Warning
Typically used for sending messages.
Caller is responsible for deleting constructed message.
template<typename T_Message , typename T_MessageKind , typename T_NetworkHeader >
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.

Parameters
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.
Warning
Typically used for receiving messages.
Caller is responsible for deleting constructed message.
template<typename T_Message , typename T_MessageKind , typename T_NetworkHeader >
static int DtMessageFactory< T_Message, T_MessageKind, T_NetworkHeader >::dfltPacketGood ( const T_NetworkHeader *  packet)
static

Default check for packet being good.

template<typename T_Message , typename T_MessageKind , typename T_NetworkHeader >
DtMessageFactory& DtMessageFactory< T_Message, T_MessageKind, T_NetworkHeader >::operator= ( const DtMessageFactory< T_Message, T_MessageKind, T_NetworkHeader > &  orig)

Operator - Assignment.

template<typename T_Message , typename T_MessageKind , typename T_NetworkHeader >
int DtMessageFactory< T_Message, T_MessageKind, T_NetworkHeader >::packetGood ( const T_NetworkHeader *  packet) const

Check that the message packet is good.

Member Data Documentation

template<typename T_Message , typename T_MessageKind , typename T_NetworkHeader >
DtReceiveCreatorMap DtMessageFactory< T_Message, T_MessageKind, T_NetworkHeader >::myReceiveCreators
protected

A map of the receive message creator functions.

template<typename T_Message , typename T_MessageKind , typename T_NetworkHeader >
DtSendCreatorMap DtMessageFactory< T_Message, T_MessageKind, T_NetworkHeader >::mySendCreators
protected

A map of the send message creator functions.


The documentation for this class was generated from the following file:

Document ID: Generated on Wed Jul 8 16:20:32 EDT 2026 from SVN revision 291616
Copyright © 2005-2025 MAK Technologies Inc. All Rights Reserved (www.mak.com)