MAK RTIspy API Documentation for HLA Evolved
messageFactory.h
Go to the documentation of this file.
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

Document ID: Generated on Thu Jun 14 14:15:04 EDT 2012 from SVN revision 116116
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)