MAK RTIspy API Documentation for HLA 1.3
testManager.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2008 VT MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 /*******************************************************************************
6 ** $RCSfile: testManager.h,v $ $Revision: 1.17 $ $State: Exp $
7 *******************************************************************************/
8 
12 
13 #ifndef DtTestManager_H_
14 #define DtTestManager_H_
15 
16 
17 #include "rtiMsConfig.h"
18 #include <vlutil/vlString.h>
19 #include <vlutil/vlTime.h>
20 #include <vlutil/vlFedTarget.h>
21 #include <vlutil/vlMutex.h>
22 #include <metadata.h>
23 #include <vector>
24 #include <list>
25 
26 #ifdef DtIFSPEC1516
27 #include "RTI/RTIambassador.h"
28 #include "RTI/LogicalTimeFactory.h"
29 #include "RTI/Enums.h"
30 using namespace rti1516;
31 #elif defined(DtIFSPEC1516E)
32 #include "RTI/RTIambassador.h"
33 #include "RTI/LogicalTimeFactory.h"
34 #include "RTI/Enums.h"
35 using namespace rti1516e;
36 #else
37 #ifdef DtIFSPEC13DLC
38 #include "RTI13.h"
39 #define RTI rti13
40 #else
41 #include "RTI.hh"
42 #endif
43 #endif
44 
45 class DtFederateMgr;
46 class DtConnectionMgr;
48 class DtRIDParameters;
49 class DtInteractionMsg;
50 class DtPhvps;
51 class DtSubInterMsg;
52 class DtUnsubInterMsg;
58 class DtResignMsg;
59 
60 
61 
62 
65 
67 {
68 protected:
69 
70  typedef enum DtInitiatorByType_e { DtInitiatedByExec, DtInitiatedByAssistant } DtInitiatorByType;
71  typedef std::multimap<DtMetadataType, MAKRti::DtTime> DtTimeStampMap;
72  typedef std::map<unsigned int, DtTimeStampMap > DtTestToTimeStampMap;
73 
75  {
77  trialID(0),
78  federateHandle(0),
79  initiatorType (DtInitiatedByAssistant),
80  numInteractions(0),
81  payLoadSize(0),
82  period(.1),
83  continuous(false)
84  { };
85 
86  unsigned int trialID;
87  unsigned int federateHandle;
89  unsigned int numInteractions;
90  unsigned int payLoadSize;
91  MAKRti::DtTime period;
92  bool continuous;
93  };
94 
95 public:
96 
98  DtTestManager(bool initiallyEnabled);
99 
101  DtTestManager(DtFederateMgr* fedMgr, bool initiallyEnabled);
102 
104  virtual ~DtTestManager();
105 
106 
108  DtRIDParameters* params();
109 
111  DtRIDParameters* params() const;
112 
114  DtFederateMgr* fedMgr();
115 
117  DtFederateMgr* fedMgr() const;
118 
119 #ifdef DtIFSPEC1516
120 
121  rti1516::RTIambassador* rtiAmb();
122 
124  rti1516::RTIambassador* rtiAmb() const;
125 #elif defined(DtIFSPEC1516E)
126 
127  rti1516e::RTIambassador* rtiAmb();
128 
130  rti1516e::RTIambassador* rtiAmb() const;
131 #else
132 
133  RTI::RTIambassador* rtiAmb();
134 
136  RTI::RTIambassador* rtiAmb() const;
137 #endif
138 
140  virtual DtConnectionMgr* connectMgr();
141 
143  virtual DtConnectionMgr* connectMgr() const;
144 
146  virtual MAKRti::DtTime time() const;
147 
150  virtual void postJoinInit();
151 
153  virtual void resign();
154 
156  virtual void tick(unsigned long tickCount);
157 
159  virtual float averageTickPeriod() const;
160 
162  virtual void enableNetworkTesting();
163 
165  virtual void disableNetworkTesting();
166 
168  virtual bool networkTestingEnabled() const;
169 
171  void processResign(const DtResignMsg& msg);
172 
176  virtual bool receiveInteraction(DtInteractionClassHandle classHandle, const DtPhvps & params);
177 
179  virtual bool testMgrCurrentlySending() const;
180 
182  virtual bool queueMsgForSend(DtRtiMsg& msg ) const;
183 
186  virtual void setTestMgrCurrentlySending( bool isSending,
187  unsigned int testID = 0 );
188 
190  virtual bool addSendTimeStampMetaDataIfNecessary( DtRtiMsg& msg );
191 
193  virtual bool addReceiveTimeStampIfNecessary( DtRtiMsg& msg );
194 
200  virtual bool addAsyncQueueMsgOnRecieve(DtRtiMsg& msg);
201 
203  virtual bool isTestInteractionClassHandle(DtInteractionClassHandle classHandle);
204 
206  virtual void sendStatusMessages() const;
207 
208 protected:
209 
211  virtual void processSub( const DtSubInterMsg& msg );
212 
214  virtual void processUnsub( const DtUnsubInterMsg& msg );
215 
219  virtual void processChangeLatencyTestStatus(const DtAssistantChangeLatencyTestModeMsg& testMsg);
220  virtual void processChangeLatencyTestStatus(const DtChangeLatencyTestModeMsg& testMsg);
221 
223  virtual void changeLatencyTestRequestByType( bool initiateTest, bool continuousCommand,
224  bool stopContinuous, bool observing, DtInitiatorByType type, MAKRti::DtTime period,
225  unsigned int numInteractions, unsigned int payloadSize );
226 
229  virtual void initiateLatencyTest();
230 
232  virtual void processLatencyTest();
233 
234  // Upon netread - get the testID from the metadata.
235  virtual bool getTestIDFromMetaData( DtRtiMsg& msg, unsigned int& testID) const;
236 
238  virtual void addKnownFederate(DtFederateHandle subscribedFed);
239 
241  virtual void removeKnownFederate(DtFederateHandle unsubscribedFed);
242 
244  virtual bool atLeastOneKnownFederate() const;
245 
247  virtual bool isKnownFederateHandle(DtFederateHandle handle) const;
248 
253  virtual void addSendInteractionTimeStamp( unsigned int testID );
254 
260  virtual void addNetSendTimeStamp( unsigned int testID, DtRtiMsg& msg );
261 
267  virtual void addNetReceiveTimeStamp( unsigned int testID, const DtRtiMsg& msg );
268 
273  virtual void addReceiveInteractionTimeStamp( unsigned int testID, MAKRti::DtTime timeToUse );
274 
278  virtual void removeKnowledgeOfTestId( unsigned int testID );
279 
284  virtual void addAsyncQueueMsgTimeStamp( unsigned int& testID, const DtRtiMsg& msg );
285 
287  MAKRti::DtTransportType transportTypeForTestID( unsigned int testID );
288 
293 
295  virtual unsigned int lastSentTestID() const;
296 
298  virtual void setLastSentTestID( unsigned int testID );
299 
301  virtual bool sendSingleLatencyInteraction(unsigned int testID,
302  DtFederateHandle recipient,
303  MAKRti::DtTransportType transport,
304  unsigned int payload );
305 
308  virtual bool addMetadataIfNecessary( DtRtiMsg& msg, unsigned int& testID ) const;
309 
311  virtual bool shouldAddMetadataToMessage( DtRtiMsg& msg ) const;
312 
314  virtual bool isInitiatorOfTestID( unsigned int testID ) const;
315 
317  virtual void calculateTickTime(unsigned long tickCount );
318 
324  virtual bool sendInteraction(unsigned int testID,
325  DtInteractionClassHandle handle, const DtPhvps& params, unsigned int payloadSize );
326 
327 protected:
328 
330  static void processSub( const DtSubInterMsg& msg, void* usr );
331 
333  static void processUnsub( const DtUnsubInterMsg& msg, void* usr );
334 
336  static void queueLatencyTestRequest( const DtAssistantChangeLatencyTestModeMsg& testMsg, void* usr );
337 
341  static void processChangeLatencyTestStatus( const DtAssistantChangeLatencyTestModeMsg& testMsg, void* usr );
342  static void processChangeLatencyTestStatus( const DtChangeLatencyTestModeMsg& testMsg, void* usr );
343 
344 private:
346  DtTestManager(DtTestManager const& orig);
347 
349  DtTestManager& operator= (DtTestManager const& orig);
350 
351 protected:
352 
355 
358 
361 
364 
366  MAKRti::DtClock myClock;
367 
372 
374  std::set<DtInitiatorByType> myObservers;
375 
378 
384 
388 
390  unsigned int myCurrentTrialID;
391 
393  unsigned int myInitiatedTrialID;
395 
399 
401  std::list<DtTrialDetails> myTrialsToInitiate;
402 
407  std::set<DtFederateHandle> myListOfKnownFederates;
408 
411 
413  unsigned long myInitialTickCount;
414 
417 
419  unsigned long mySecondTickCount;
420 
423 
425  bool myEnabled;
426 
429 
432 
436 
437 };
438 
439 #endif

Document ID: Generated on Fri Mar 14 19:08:55 EDT 2014 from SVN revision 137085
Copyright © 2005-2014 VT MÄK Inc. All Rights Reserved (www.mak.com)