![]() |
MAK RTIspy API Documentation for HLA Evolved
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2008 VT MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: latencyTest.h,v $ $Revision: 1.6 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00013 00014 #ifndef DtLatencyTest_H_ 00015 #define DtLatencyTest_H_ 00016 00017 00018 #include "rtiMsConfig.h" 00019 #include <vlutil/vlString.h> 00020 #include <vlutil/vlTime.h> 00021 #include <vlutil/vlFedTarget.h> 00022 #include <metadata.h> 00023 #include "RIDparams.h" 00024 00025 #ifdef DtIFSPEC1516 00026 #include "RTI/RTIambassador.h" 00027 #include "RTI/LogicalTimeFactory.h" 00028 #include "RTI/Enums.h" 00029 using namespace rti1516; 00030 #elif defined(DtIFSPEC1516E) 00031 #include "RTI/RTIambassador.h" 00032 #include "RTI/LogicalTimeFactory.h" 00033 #include "RTI/Enums.h" 00034 using namespace rti1516e; 00035 #else 00036 #ifdef DtIFSPEC13DLC 00037 #include "RTI13.h" 00038 #else 00039 #include "RTI.hh" 00040 #endif 00041 #endif 00042 00043 class DtTestManager; 00044 00047 class DT_DLL_LRC DtLatencyTest 00048 { 00049 00050 public: 00051 00053 struct DtLatencyTestReportStruct 00054 { 00055 DtLatencyTestReportStruct() : 00056 testID(0), 00057 recipientAsyncMode(DtRIDParameters::DtSynchronousMode), 00058 initiatorAsyncMode(DtRIDParameters::DtSynchronousMode), 00059 averageInitiatorTickPeriod(0.0f), 00060 averageRecipientTickPeriod(0.0f), 00061 sizeOfPayload(0), 00062 numbersAreReliable(false), 00063 initiatorSendInteraction(0.0f), 00064 initiatorNetSend(0.0f), 00065 recipientNetRead(0.0f), 00066 recipientQueueMsg(0.0f), 00067 recipReceiveInteraction(0.0f), 00068 recipientSendInteraction(0.0f), 00069 recipientNetSend(0.0f), 00070 initiatorNetRead(0.0f), 00071 initiatorQueueMsg(0.0f), 00072 initiatorReceiveInteraction(0.0f), 00073 recipientName(0.0f) 00074 { } 00075 00076 unsigned int testID; 00077 DtRIDParameters::DtAsynchronousIOModeEnum recipientAsyncMode; 00078 DtRIDParameters::DtAsynchronousIOModeEnum initiatorAsyncMode; 00079 float averageInitiatorTickPeriod; 00080 float averageRecipientTickPeriod; 00081 unsigned int sizeOfPayload; 00082 00083 bool numbersAreReliable; 00084 00085 MAKRti::DtTime initiatorSendInteraction; 00086 MAKRti::DtTime initiatorNetSend; 00087 MAKRti::DtTime recipientNetRead; 00088 MAKRti::DtTime recipientQueueMsg; 00089 MAKRti::DtTime recipReceiveInteraction; 00090 MAKRti::DtTime recipientSendInteraction; 00091 MAKRti::DtTime recipientNetSend; 00092 MAKRti::DtTime initiatorNetRead; 00093 MAKRti::DtTime initiatorQueueMsg; 00094 MAKRti::DtTime initiatorReceiveInteraction; 00095 MAKRti::DtString recipientName; 00096 }; 00097 00099 DtLatencyTest(DtTestManager* parent); 00100 00102 DtLatencyTest(); 00103 00105 virtual ~DtLatencyTest(); 00106 00108 virtual bool tick(); 00109 00112 virtual void postJoinInit(); 00113 00115 virtual void resign(); 00116 00117 00119 00123 virtual void addSendInteractionTimeStamp( unsigned int testID ) = 0; 00124 00128 virtual void addNetSendTimeStamp( unsigned int testID, DtRtiMsg& msg ) = 0; 00129 00133 virtual void addNetReceiveTimeStamp( unsigned int testID, const DtRtiMsg& msg ) = 0; 00134 00138 virtual void addReceiveInteractionTimeStamp( unsigned int testID, MAKRti::DtTime timeToUse ) = 0; 00139 00143 virtual void addAsyncQueueMsgTimeStamp( unsigned int testID, const DtRtiMsg& msg ) = 0; 00144 00146 virtual void addTransportTypeForTestID(unsigned int testID, MAKRti::DtTransportType type ); 00147 00149 virtual MAKRti::DtTransportType transportTypeForTestID( unsigned int testID ) const; 00150 00154 virtual void removeKnowledgeOfTestId( unsigned int testID ); 00155 00156 // Return the time as reported by the parent test Manager. 00157 MAKRti::DtTime time() const; 00158 00159 protected: 00160 00161 00162 private: 00164 DtLatencyTest(DtLatencyTest const& orig); 00165 00167 DtLatencyTest& operator= (DtLatencyTest const& orig); 00168 00169 protected: 00170 00171 DtTestManager* myTestManager; 00172 00173 typedef std::multimap<DtMetadataType, MAKRti::DtTime> DtTimeStampMap; 00174 typedef std::map<unsigned int, DtTimeStampMap > DtTestToTimeStampMap; 00175 typedef std::multimap<DtFederateHandle, unsigned int> DtFedHandleToTestMap; 00176 00180 DtTestToTimeStampMap myTestsInProgressTimeStamps; 00181 00182 std::map<unsigned int, MAKRti::DtTransportType> myTransportByTestID; 00183 00184 }; 00185 00186 #endif