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

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)