![]() |
MAK RTIspy API Documentation for HLA Evolved
|
00001 /********************************************************************* 00002 ** Copyright (c) 1998 MaK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: messageFactory.h,v $ $Revision: 1.2 $ $State: Exp $ 00007 *********************************************************************/ 00008 00009 #ifndef DtMessageFactory_H_ 00010 #define DtMessageFactory_H_ 00011 00015 00016 00017 #include <vlutil/vlBaseMsg.h> 00018 #include <map> 00019 00020 00032 template <typename T_Message, typename T_MessageKind, typename T_NetworkHeader> 00033 class DtMessageFactory 00034 { 00035 public: 00036 00041 typedef T_Message* (*DtReceiveMessageCreator)( 00042 const T_NetworkHeader* packet, MAKRti::DtBufferPtr buffer); 00043 00046 typedef T_Message* (*DtSendMessageCreator)(MAKRti::DtBufferPtr buffer); 00047 00049 typedef std::map<T_MessageKind, DtReceiveMessageCreator> DtReceiveCreatorMap; 00050 00052 typedef std::map<T_MessageKind, DtSendMessageCreator> DtSendCreatorMap; 00053 00054 public: 00055 00057 DtMessageFactory(); 00058 00060 DtMessageFactory(const DtMessageFactory& orig); 00061 00063 ~DtMessageFactory(); 00064 00066 DtMessageFactory& operator=(const DtMessageFactory& orig); 00067 00075 T_Message* create(T_MessageKind kind, 00076 MAKRti::DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00077 00078 00083 00092 T_Message* create(const T_NetworkHeader* packet, 00093 MAKRti::DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00094 00100 DtSendMessageCreator addSendCreator(T_MessageKind kind, 00101 DtSendMessageCreator creator); 00102 00108 DtReceiveMessageCreator addRecvCreator(T_MessageKind kind, 00109 DtReceiveMessageCreator creator); 00110 00113 void addCreators(T_MessageKind kind, 00114 DtReceiveMessageCreator rCreator, DtSendMessageCreator sCreator); 00115 00117 int packetGood(const T_NetworkHeader* packet) const; 00118 00119 public: 00120 00122 static int dfltPacketGood(const T_NetworkHeader* packet); 00123 00124 protected: 00125 00127 DtSendCreatorMap mySendCreators; 00128 00130 DtReceiveCreatorMap myReceiveCreators; 00131 }; 00132 00133 #include "messageFactory.inl" 00134 00135 #endif