MAK RTIspy API Documentation for HLA 1.3
latencyTest.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: 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

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)