![]() |
MAK RTIspy API Documentation for HLA 1516
|
00001 00002 /********************************************************************* 00003 ** Copyright (c) 1998 MaK Technologies, Inc. 00004 ** All rights reserved. 00005 *********************************************************************/ 00006 /********************************************************************* 00007 ** $RCSfile: lbtsMsg.h,v $ $Revision: 1.12 $ $State: Exp $ 00008 *********************************************************************/ 00009 00012 00013 #ifndef DtLbtsMsg_H_ 00014 #define DtLbtsMsg_H_ 00015 00016 #ifdef DtTIME 00017 00018 #include "rtiMsg.h" 00019 #include "netlbtsMsg.h" 00020 00021 class DtConnectionMgr; 00022 class DtLbtsMsg; 00023 typedef void (*DtLbtsMsgCb)(const DtLbtsMsg& msg, void* usr); 00024 00025 class DT_DLL_LRC DtLbtsMsg : public DtRtiMsg 00026 { 00027 public: 00028 00030 DtLbtsMsg(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00031 00033 DtLbtsMsg( 00034 DtFederateHandle handle, 00035 #ifdef DtIFSPEC1516 00036 rti1516::LogicalTime const & lbtsVal, 00037 rti1516::LogicalTime const & lagLbtsVal, 00038 #elif defined(DtIFSPEC1516E) 00039 rti1516e::LogicalTime const & lbtsVal, 00040 rti1516e::LogicalTime const & lagLbtsVal, 00041 #else 00042 RTI::FedTime const & lbtsVal, 00043 RTI::FedTime const & lagLbtsVal, 00044 #endif 00045 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00046 00048 DtLbtsMsg(const DtNetLbts* netRepMsg, 00049 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00050 00052 virtual ~DtLbtsMsg(); 00053 00055 virtual DtRtiMsg* clone(bool copy = true) const; 00056 00058 virtual void set( 00059 DtFederateHandle handle, 00060 #ifdef DtIFSPEC1516 00061 rti1516::LogicalTime const & lbtsVal, 00062 rti1516::LogicalTime const & lagLbtsVal); 00063 #elif defined(DtIFSPEC1516E) 00064 rti1516e::LogicalTime const & lbtsVal, 00065 rti1516e::LogicalTime const & lagLbtsVal); 00066 #else 00067 RTI::FedTime const & lbtsVal, 00068 RTI::FedTime const & lagLbtsVal); 00069 #endif 00070 00072 virtual void setLaggardFederate(DtFederateHandle handle); 00073 virtual DtFederateHandle laggardFederate() const; 00074 00076 #ifdef DtIFSPEC1516 00077 virtual void setTime(rti1516::LogicalTime const & timeVal); 00078 virtual rti1516::LogicalTime const * time( 00079 DtLogicalTimeFactory* logicalTimeFactory) const; 00080 #elif defined(DtIFSPEC1516E) 00081 virtual void setTime(rti1516e::LogicalTime const & timeVal); 00082 virtual rti1516e::LogicalTime const * time( 00083 DtLogicalTimeFactory* logicalTimeFactory) const; 00084 #else 00085 virtual void setTime(RTI::FedTime const & timeVal); 00086 virtual RTI::FedTime const * time( 00087 DtLogicalTimeFactory* logicalTimeFactory) const; 00088 #endif 00089 00091 #ifdef DtIFSPEC1516 00092 virtual void setLagLbts(rti1516::LogicalTime const & lbtsVal); 00093 virtual rti1516::LogicalTime const * lagLbts( 00094 DtLogicalTimeFactory* logicalTimeFactory) const; 00095 #elif defined(DtIFSPEC1516E) 00096 virtual void setLagLbts(rti1516e::LogicalTime const & lbtsVal); 00097 virtual rti1516e::LogicalTime const * lagLbts( 00098 DtLogicalTimeFactory* logicalTimeFactory) const; 00099 #else 00100 virtual void setLagLbts(RTI::FedTime const & lbtsVal); 00101 virtual RTI::FedTime const * lagLbts( 00102 DtLogicalTimeFactory* logicalTimeFactory) const; 00103 #endif 00104 00106 virtual void printData(DtLogicalTimeFactory* logicalTimeFactory) const; 00107 00108 public: 00109 00111 static DtRtiMsg* create(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00112 00114 static DtRtiMsg* create(const DtNetMsgHeader* initial, 00115 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00116 00118 static void addCallback(DtConnectionMgr *conn, 00119 DtLbtsMsgCb cb, void *usr); 00120 static void removeCallback(DtConnectionMgr *conn, 00121 DtLbtsMsgCb cb, void *usr); 00122 00123 protected: 00124 00126 DtRtiMsgKind internalDtRtiMsgKind(); 00127 00129 virtual DtNetLbts* netLbtsMsg(); 00130 virtual const DtNetLbts* netLbtsMsg() const; 00131 00133 #ifdef DtIFSPEC1516 00134 virtual int minSize(rti1516::LogicalTime const * lbtsVal=NULL, 00135 rti1516::LogicalTime const * lagLbtsVal=NULL) const; 00136 #elif defined(DtIFSPEC1516E) 00137 virtual int minSize(rti1516e::LogicalTime const * lbtsVal=NULL, 00138 rti1516e::LogicalTime const * lagLbtsVal=NULL) const; 00139 #else 00140 virtual int minSize(RTI::FedTime const * lbtsVal=NULL, 00141 RTI::FedTime const * lagLbtsVal=NULL) const; 00142 #endif 00143 00145 virtual void setTimeSize(int size); 00146 virtual int timeSize() const; 00147 00149 virtual char* timePtr(); 00150 00152 virtual void setLagLbtsSize(int size); 00153 virtual int lagLbtsSize() const; 00154 00156 virtual char* lagLbtsPtr(); 00157 00159 virtual int timeFieldSize() const; 00160 00162 virtual int lagLbtsFieldSize() const; 00163 00165 virtual DtLbtsMsg* self() const; 00166 00167 protected: 00169 #ifdef DtIFSPEC1516 00170 rti1516::LogicalTime* myLagLbts; 00171 #elif defined(DtIFSPEC1516E) 00172 rti1516e::LogicalTime* myLagLbts; 00173 #else 00174 RTI::FedTime* myLagLbts; 00175 #endif 00176 }; 00177 00178 inline DtLbtsMsg* DtLbtsMsg::self() const 00179 { 00180 return const_cast<DtLbtsMsg*>( this ); 00181 } 00182 00183 #endif 00184 #endif 00185 00186