![]() |
MAK RTIspy API Documentation for HLA Evolved
|
00001 00002 /********************************************************************* 00003 ** Copyright (c) 1998 MaK Technologies, Inc. 00004 ** All rights reserved. 00005 *********************************************************************/ 00006 /********************************************************************* 00007 ** $RCSfile: nerLbtsMsg.h,v $ $Revision: 1.9 $ $State: Exp $ 00008 *********************************************************************/ 00009 00012 00013 #ifndef DtNerLbtsMsg_H_ 00014 #define DtNerLbtsMsg_H_ 00015 00016 #ifdef DtTIME 00017 00018 #include "rtiMsg.h" 00019 #include "netNerLbtsMsg.h" 00020 00021 class DtConnectionMgr; 00022 class DtNerLbtsMsg; 00023 typedef void (*DtNerLbtsMsgCb)(const DtNerLbtsMsg& msg, void* usr); 00024 00025 class DT_DLL_LRC DtNerLbtsMsg : public DtRtiMsg 00026 { 00027 public: 00028 00030 DtNerLbtsMsg(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00031 00033 DtNerLbtsMsg( 00034 unsigned long nerCycleVal, 00035 DtFederateHandle handle, 00036 bool nerPending, 00037 bool lagNerPending, 00038 #ifdef DtIFSPEC1516 00039 rti1516::LogicalTime const & lbtsVal, 00040 rti1516::LogicalTime const & lagLbtsVal, 00041 #elif defined(DtIFSPEC1516E) 00042 rti1516e::LogicalTime const & lbtsVal, 00043 rti1516e::LogicalTime const & lagLbtsVal, 00044 #else 00045 RTI::FedTime const & lbtsVal, 00046 RTI::FedTime const & lagLbtsVal, 00047 #endif 00048 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00049 00051 DtNerLbtsMsg(const DtNetNerLbts* netRepMsg, 00052 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00053 00055 virtual ~DtNerLbtsMsg(); 00056 00058 virtual DtRtiMsg* clone(bool copy = true) const; 00059 00061 virtual void set( 00062 unsigned long nerCycleVal, 00063 DtFederateHandle handle, 00064 bool nerPending, 00065 bool lagNerPending, 00066 #ifdef DtIFSPEC1516 00067 rti1516::LogicalTime const & lbtsVal, 00068 rti1516::LogicalTime const & lagLbtsVal); 00069 #elif defined(DtIFSPEC1516E) 00070 rti1516e::LogicalTime const & lbtsVal, 00071 rti1516e::LogicalTime const & lagLbtsVal); 00072 #else 00073 RTI::FedTime const & lbtsVal, 00074 RTI::FedTime const & lagLbtsVal); 00075 #endif 00076 00078 virtual void setNerCycle(unsigned long nerCycleVal); 00079 virtual unsigned long nerCycle() const; 00080 00082 virtual void setLaggardFederate(DtFederateHandle handle); 00083 virtual DtFederateHandle laggardFederate() const; 00084 00086 virtual void setIsNerPending(bool nerAvailable); 00087 virtual bool isNerPending() const; 00088 00090 virtual void setIsLagNerPending(bool nerAvailable); 00091 virtual bool isLagNerPending() const; 00092 00094 #ifdef DtIFSPEC1516 00095 virtual void setTime(rti1516::LogicalTime const & timeVal); 00096 virtual rti1516::LogicalTime const * time( 00097 DtLogicalTimeFactory* logicalTimeFactory) const; 00098 #elif defined(DtIFSPEC1516E) 00099 virtual void setTime(rti1516e::LogicalTime const & timeVal); 00100 virtual rti1516e::LogicalTime const * time( 00101 DtLogicalTimeFactory* logicalTimeFactory) const; 00102 #else 00103 virtual void setTime(RTI::FedTime const & timeVal); 00104 virtual RTI::FedTime const * time( 00105 DtLogicalTimeFactory* logicalTimeFactory) const; 00106 #endif 00107 00109 #ifdef DtIFSPEC1516 00110 virtual void setLagLbts(rti1516::LogicalTime const & lbtsVal); 00111 virtual rti1516::LogicalTime const * lagLbts( 00112 DtLogicalTimeFactory* logicalTimeFactory) const; 00113 #elif defined(DtIFSPEC1516E) 00114 virtual void setLagLbts(rti1516e::LogicalTime const & lbtsVal); 00115 virtual rti1516e::LogicalTime const * lagLbts( 00116 DtLogicalTimeFactory* logicalTimeFactory) const; 00117 #else 00118 virtual void setLagLbts(RTI::FedTime const & lbtsVal); 00119 virtual RTI::FedTime const * lagLbts( 00120 DtLogicalTimeFactory* logicalTimeFactory) const; 00121 #endif 00122 00124 virtual void printData(DtLogicalTimeFactory* logicalTimeFactory) const; 00125 00126 public: 00127 00129 static DtRtiMsg* create(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00130 00132 static DtRtiMsg* create(const DtNetMsgHeader* initial, 00133 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00134 00136 static void addCallback(DtConnectionMgr *conn, 00137 DtNerLbtsMsgCb cb, void *usr); 00138 static void removeCallback(DtConnectionMgr *conn, 00139 DtNerLbtsMsgCb cb, void *usr); 00140 00141 protected: 00142 00144 DtRtiMsgKind internalDtRtiMsgKind(); 00145 00147 virtual DtNetNerLbts* netNerLbtsMsg(); 00148 virtual const DtNetNerLbts* netNerLbtsMsg() const; 00149 00151 #ifdef DtIFSPEC1516 00152 virtual int minSize(rti1516::LogicalTime const * lbtsVal=NULL, 00153 rti1516::LogicalTime const * lagLbtsVal=NULL) const; 00154 #elif defined(DtIFSPEC1516E) 00155 virtual int minSize(rti1516e::LogicalTime const * lbtsVal=NULL, 00156 rti1516e::LogicalTime const * lagLbtsVal=NULL) const; 00157 #else 00158 virtual int minSize(RTI::FedTime const * lbtsVal=NULL, 00159 RTI::FedTime const * lagLbtsVal=NULL) const; 00160 #endif 00161 00163 virtual void setTimeSize(int size); 00164 virtual int timeSize() const; 00165 00167 virtual char* timePtr(); 00168 00170 virtual void setLagLbtsSize(int size); 00171 virtual int lagLbtsSize() const; 00172 00174 virtual char* lagLbtsPtr(); 00175 00177 virtual int timeFieldSize() const; 00178 00180 virtual int lagLbtsFieldSize() const; 00181 00183 virtual DtNerLbtsMsg* self() const; 00184 00185 protected: 00187 #ifdef DtIFSPEC1516 00188 rti1516::LogicalTime* myLagLbts; 00189 #elif defined(DtIFSPEC1516E) 00190 rti1516e::LogicalTime* myLagLbts; 00191 #else 00192 RTI::FedTime* myLagLbts; 00193 #endif 00194 }; 00195 00196 inline DtNerLbtsMsg* DtNerLbtsMsg::self() const 00197 { 00198 return const_cast<DtNerLbtsMsg*>( this ); 00199 } 00200 00201 #endif 00202 #endif 00203 00204