![]() |
MAK RTIspy API Documentation for HLA Evolved
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2008 VT MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: initiatorLatencyTest.h,v $ $Revision: 1.8 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00012 00013 #ifndef DtInitiatorLatencyTest_H_ 00014 #define DtInitiatorLatencyTestr_H_ 00015 00016 00017 #include "rtiMsConfig.h" 00018 #include "latencyTest.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 #include "metadataFederateHostInformation.h" 00025 00026 class DtConnectionMgr; 00027 class DtAssistantChangeLatencyTestModeMsg; 00028 class DtAssistantLatencyReportMsg; 00029 class DtAveragedLatencyTestReport; 00030 00031 00032 00033 00034 00037 00038 class DT_DLL_LRC DtInitiatorLatencyTest : public DtLatencyTest 00039 { 00040 00041 public: 00042 00044 DtInitiatorLatencyTest(DtTestManager* parent); 00045 00047 DtInitiatorLatencyTest(); 00048 00050 virtual ~DtInitiatorLatencyTest(); 00051 00053 virtual bool tick(); 00054 00057 virtual void addSendInteractionTimeStamp( unsigned int testID ); 00058 00061 virtual void addNetSendTimeStamp( unsigned int testID, DtRtiMsg& msg ); 00062 00065 virtual void addNetReceiveTimeStamp( unsigned int testID, const DtRtiMsg& msg ); 00066 00069 virtual void addReceiveInteractionTimeStamp( unsigned int testID, MAKRti::DtTime timeToUse ); 00070 00073 virtual void addAsyncQueueMsgTimeStamp( unsigned int testID, const DtRtiMsg& msg ); 00074 00076 virtual bool canInitiateTest() const; 00077 00078 virtual bool takeCompletedTestReport( unsigned int trialID, 00079 DtAveragedLatencyTestReport& takenReport); 00080 00082 virtual void initiateLatencyTest(unsigned int trialID, 00083 unsigned int numInteractions, 00084 unsigned int sizeOfPayload, 00085 MAKRti::DtTime periodBetweenSends, 00086 DtFederateHandle handle); 00087 00089 virtual bool testIsFinished( unsigned int testID ) const; 00090 00092 virtual void getCurrentTestInfo(unsigned int& testID, 00093 DtFederateHandle& handle, 00094 MAKRti::DtTransportType& transport, 00095 unsigned int& payloadSize ) const; 00096 00098 virtual bool trialIsFinished( unsigned int trialID ) const; 00099 00100 00101 protected: 00102 00106 virtual bool getCompletedReportByTestID( unsigned int testID, 00107 DtLatencyTestReportStruct& report ) const; 00108 00110 virtual void averageReports(const std::vector<DtLatencyTestReportStruct*>& bestEffortTests, 00111 const std::vector<DtLatencyTestReportStruct*>& reliableTests, 00112 DtFederateHandle recipientHandle, 00113 DtFederateHandle initiatorHandle, 00114 const MAKRti::DtString& recipientName, 00115 const MAKRti::DtString& initiatorName, 00116 DtRIDParameters::DtAsynchronousIOModeEnum recipientAsyncMode, 00117 DtRIDParameters::DtAsynchronousIOModeEnum initiatorAsyncMode, 00118 unsigned int numBestEffortDropped, 00119 unsigned int numReliableDropped, 00120 DtAveragedLatencyTestReport& averaged) const; 00121 00122 00124 virtual unsigned int currTestId() const; 00125 00127 virtual void consumeTestId(); 00128 00129 private: 00131 DtInitiatorLatencyTest(DtInitiatorLatencyTest const& orig); 00132 00134 DtInitiatorLatencyTest& operator= (DtInitiatorLatencyTest const& orig); 00135 00136 protected: 00137 00138 MAKRti::DtTime myNextSend; 00139 unsigned short myTestOffset; 00140 00141 typedef std::pair<unsigned int, MAKRti::DtTransportType> DtNumToTypePair; 00142 typedef std::multimap<DtFederateHandle, DtNumToTypePair> DtFedHandleToTestMap; 00143 00144 // Storage of my completed initiated tests. 00145 DtTestToTimeStampMap myCompletedInitiatedTests; 00146 std::map<unsigned int, DtFederateHandle> myFedHandleByTestID; 00147 00150 unsigned int myNumTestsToAverage; 00151 00155 MAKRti::DtTime myLatencyInterval; 00156 00159 unsigned int myPayloadSize; 00160 00162 std::map<unsigned int, DtRIDParameters::DtAsynchronousIOModeEnum> myRecipientAsyncIOModeByFedHandle; 00163 00166 std::set<unsigned int> myInitiatedTestIDs; 00167 00170 std::map<unsigned int, DtFedHandleToTestMap> myNumberOfInteractionsLeftByFederate; 00171 00173 std::map<unsigned int, DtRtiMtdFederateHostInformation::DtFederateHostInformation> myRecipientHostInfoMap; 00174 00176 std::map<unsigned int, std::set<unsigned int> > myTestIDsByTrial; 00177 00178 DtFederateHandle myFedHandleOfCurrentTest; 00179 unsigned int myTestIDOfCurrentTest; 00180 00181 00182 }; 00183 00184 #endif