MAK Data Logger API Documentation for DIS
lgrHlaSimManager.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 1992-2010 VT MAK
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #ifndef lgrHlaSimManager_H_
11 #define lgrHlaSimManager_H_
12 
13 #if DtHLA
14 
15 #include "lgrSim.h"
16 #include "lgrBaseSimManager.h"
17 #include "lgrHlaConfigData.h"
18 #include "virtualConstructor.h"
19 #include "subscriptionListFile.h"
20 
21 #include <vl/rtiNamespace.h>
22 #include <vl/geodeticRegion.h>
23 
24 #include <set>
25 #include <vector>
26 
27 class DtObjectPublisher;
28 class DtExerciseConnInitializer;
29 class DtExerciseConn;
30 class DtHlaObjectFactory;
31 class DtHlaObject;
32 class DtGenericStateRepository;
33 class DtInteraction;
34 class DtHlaTAFilter;
35 
36 namespace MAKTrafficClientServerExConn
37 {
38  class DtServerExerciseConnection;
39 }
40 
41 namespace MAKLogger
42 {
43  class DtLogger;
44  class DtLgrOnlineFomDesc;
45  class DtLgrClock;
46  class DtMessageBuffer;
47  class DtLgrHlaMessageState;
48  class DtLgrHlaSimOutput;
49  class DtLgrHlaSimInput;
50  class DtLgrHlaTimeProvider;
51  class DtLgrHlaSimDriver;
52  class DtLgrFomWithRegions;
53 
55  enum DtPlaybackRegionMode
56  {
57  DtPlaybackRegionNotEnabled,
58  DtPlaybackRegionsUseData,
59  DtPlaybackRegionsUseConveyedExtents
60  };
61 
63  enum DtSubscribeRegionMode
64  {
65  DtSubscribeRegionNotEnabled,
66  DtSubscribeRegionsAreSpecified,
67  DtSubscribeRegionsAreGlobal
68  };
69 
72  class DT_DLL_LGRSIM DtLgrHlaSimulationManager : public DtLgrBaseSimManager
73  {
74  public:
75 
76 
77  DT_VIRTUAL_CTR(DtLgrHlaSimulationManager,(DtLogger& logger,
78  DtLgrHlaSimDriver* simDriverPtr))
79  virtual ~DtLgrHlaSimulationManager();
80 
82  virtual void setExerciseConn(DtExerciseConn* exconn);
83 
85  virtual void tick();
86 
88  virtual bool isConnected() const;
89 
91  virtual void setSubscriptionListToAll();
92 
94  virtual void setObjectSubscriptionList(const std::vector<DtString>& objectClasses);
95 
97  virtual void setInteractionSubscriptionList(const std::vector<DtString>& interactionClasses);
98 
100  virtual void setSubscriptionList(const DtSubscriptionListFile& list);
101 
103  virtual const DtSubscriptionListFile& subscriptionList() const;
104 
106  virtual std::vector<DtString> objectSubscriptionList() const;
107 
109  virtual std::vector<DtString> interactionSubscriptionList() const;
110 
112  virtual void subscribeToData();
113 
115  virtual void unsubscribeToData();
116 
118  virtual void addTrafficAnalyzerFilter(DtHlaTAFilter* taFilter);
119 
121  virtual void removeTrafficAnalyzerFilter(DtHlaTAFilter* taFilter);
122 
125  virtual bool evaluateTrafficAnalyzerFilters(
126  const DtGenericStateRepository& stateRep, const DtHlaObject& obj);
127 
130  virtual bool evaluateTrafficAnalyzerFilters(const DtInteraction& interaction);
131 
133 
134  virtual const DtLgrSimInput* input() const;
135  virtual DtLgrSimInput* input();
137 
139 
140  virtual const DtLgrSimOutput* output() const;
141  virtual DtLgrSimOutput* output();
143 
145 
146  virtual const DtMessageState* state() const;
147  virtual DtMessageState* state();
149 
153  virtual DtLgrFileInput* openFileForInput(const DtString& filename) const;
154 
155 
159  virtual DtLgrFileOutput* openFileForCopying(const DtString& filename,
160  const DtLgrFileInput* input) const;
161 
166  virtual DtLgrFileOutput* openFileForOutput(const DtString& filename,
167  const DtString& description) const;
168 
174  virtual DtLgrFileInput* openPartialFileForCopying(
175  const DtLgrFileOutput* output, DtFilePosition firstPacket,
176  DtFilePosition lastPacket) const;
177 
179  virtual void initPlayback(DtLgrFileInput& input);
180 
181 
183  virtual DtMessageState* createState() const;
184 
186  virtual bool connect(DtExerciseConnInitializer& initializer);
187 
189  virtual void connectShared(DtExerciseConn* exConn);
190 
192  virtual void disconnect();
193 
194  typedef DtObjectPublisher* (DtPublisherCreator)();
195 
197  virtual bool ignoreAdvisories() const;
198 
200  virtual void setDrainInputMaxTime(double maxTime);
201 
203  virtual void setDrainInputMinTime(double minTime);
204 
206  virtual double drainInputMaxTime() const;
207 
209  virtual double drainInputMinTime() const;
210 
212  virtual void setPassiveSubscription(bool ignore);
213 
215  virtual bool passiveSubscription() const;
216 
218  virtual void setDdmEnabled( bool enableDdm );
219 
221  virtual bool ddmEnabled() const;
222 
224  virtual void setTrafficAnalyzerEnabled( bool enableTrafficAnalyzer );
225 
227  virtual bool trafficAnalyzerEnabled() const;
228 
231  virtual const DtLgrOnlineFomDesc* fomDescription() const;
232 
234  virtual DtHlaObjectFactory* defaultObjectFactory();
235 
237  virtual void setTimeManagementSettings(bool constrainOnRecord,
238  bool constrainOnPlayback,bool regulateOnRecord,bool regulateOnPlayback,
239  double lookAheadTime);
240 
242  virtual bool isTimeManagementEnabled() const;
243 
247  virtual bool enableTimeConstrained();
248 
250  virtual bool testTimeManagement();
251 
255  virtual bool disableTimeConstrained();
256 
258  virtual bool isTimeConstrained() const;
259 
263  virtual bool enableTimeRegulating(double lookAheadInterval);
264 
268  virtual bool disableTimeRegulating();
269 
271  virtual bool isTimeRegulating() const;
272 
274  virtual void registerTimeAdvanceGrant();
275 
277  virtual void unregisterTimeAdvanceGrant();
278 
281  virtual double requestTimeAdvance();
282 
284  virtual double requestAdvanceToNextEvent();
285 
288  virtual bool changeLookAheadTime(double time) ;
289 
291  virtual bool isTimeAdvanceGrantRegistered() const;
292 
296  virtual bool nextMessageRequest(bool available=false);
297 
299  virtual double lookAheadTime() const;
300 
302  virtual bool constrainOnRecord() const;
303 
305  virtual bool constrainOnPlayback() const;
306 
308  virtual bool regulateOnRecord() const;
309 
311  virtual bool regulateOnPlayback() const;
312 
314  virtual double fedTime() const;
315 
317  virtual double requestedTime() const;
318 
320  virtual double initialFedTime() const;
321 
323  virtual bool isTimeAdvancing() const;
324 
326  virtual bool isRequestingNextEvent() const;
327 
329  virtual bool isRequestingTimeAdvance() const;
330 
332  virtual void setDisableTimeManagementTest(bool disableTest);
333 
335  virtual void setAllowUnsubscribes(bool allowUnsubscribe);
336 
338  virtual bool allowUnsubscribes() const;
339 
340  //virtual bool subscribeInteractionWithRegion(
341 
343  virtual const DtString& dynamicNamePrefix() const;
344 
346  virtual void setDynamicNamePrefix(const DtString& dynamicNamePrefix);
347 
349  virtual DtLgrHlaSimDriver* simDriver();
350 
352  virtual const DtLgrHlaSimDriver* simDriver() const;
353 
354 
356  virtual bool testDdm() const;
357 
361  virtual bool addPlaybackRegionSetForObjectName(const DtString& objectName, const DtString& regionSetName);
362 
364  virtual void removePlaybackRegionSetForObjectName(const DtString& objectName);
365 
370  virtual unsigned int getPlaybackRegionSetForObjectName(DtString objectName,
371  DtDDMRegionSet& regionSet, bool cacheRegions=true);
372 
376  virtual bool addPlaybackRegionSetForInteractionClass(const DtString& className, const DtString& regionSetName);
377 
379  virtual void removePlaybackRegionSetForInteractionClass(const DtString& className);
380 
384  virtual unsigned int getPlaybackRegionSetForInteractionClass(DtString className,
385  DtDDMRegionSet& regionSet, bool cacheRegions=true);
386 
388  virtual void subscribeToList(const DtSubscriptionListFile& sublist);
389 
391  virtual void setPublicationList(const DtSubscriptionListFile& publist);
392 
394  virtual const DtSubscriptionListFile& publicationList() const;
395 
397  virtual void setConfigurationFileName(const DtString& filename);
398 
400  virtual DtLgrFomWithRegions *fomWithRegions();
401 
403  virtual MAKLogger::DtPlaybackRegionMode playbackRegionMode() const;
404 
406  virtual void setPlaybackRegionMode(MAKLogger::DtPlaybackRegionMode val);
407 
409  virtual MAKLogger::DtSubscribeRegionMode subscribeRegionMode() const;
410 
412  virtual void setSubscribeRegionMode(MAKLogger::DtSubscribeRegionMode val);
413 
415  virtual bool playbackRegionDynamicAssociationEnabled() const;
416 
418  virtual void setPlaybackRegionDynamicAssociationEnabled(bool val);
419 
421  virtual bool playbackRegionDynamicExtentsEnabled() const;
422 
424  virtual void setPlaybackRegionDynamicExtentsEnabled(bool val);
425 
427  virtual bool recordConveyedRegionsEnabled() const;
428 
430  virtual void setRecordConveyedRegionsEnabled(bool val);
431 
433  virtual bool requestUpdatesEnabled() const;
434 
436  virtual void setRequestUpdatesEnabled(bool val);
437 
439  virtual bool subscribeUnspecifiedAttributesEnabled() const;
440 
442  virtual void setSubscribeUnspecifiedAttributesEnabled(bool val);
443 
445  virtual bool playbackWithoutRegionsEnabled() const;
446 
448  virtual void setPlaybackWithoutRegionsEnabled(bool val);
449 
451  virtual bool subscribeToAllClassesEnabled() const;
452 
454  virtual void setSubscribeToAllClassesEnabled(bool val);
455 
456 
457  protected:
458 
459  virtual const DtLgrHlaConfigData& configData() const;
460 
464  virtual bool getSubscribeRegionSetForObjectClass(const DtString& classname, DtDDMRegionSet& regionSet) const;
465 
469  virtual bool getSubscribeRegionSetForInteractionClass(const DtString& classname, DtDDMRegionSet& regionSet) const;
470 
476  virtual bool getGlobalObjectRegionSet(const DtString& className, DtDDMRegionSet& regionSet);
477 
481  virtual bool getGlobalInteractionRegionSet(const DtString& className, DtDDMRegionSet& regionSet);
482 
485  virtual int drainInput(DtTime maxTime = -1, DtTime minTime = 0.0);
486 
487 #if DtHLA_1516
488  typedef RTI::LogicalTime RtiTime;
489  typedef RTI::LogicalTimeInterval RtiTimeInterval;
490 #else
491  typedef RTI::FedTime RtiTime;
492  typedef RTI::FedTime RtiTimeInterval;
493 #endif
494 
496  virtual void timeAdvanceGrant( const RtiTime&);
497  virtual void timeConstrainedEnable( const RtiTime&);
498  virtual void timeRegulationEnable( const RtiTime&);
499 
500  virtual void initializeFederationTime();
502 
504  virtual void setObjectClassSubscriptionState(const DtString& name, const DtDDMRegionSet& regionset, bool subscribeToClass);
505 
507  virtual void setInteractionClassSubscriptionState(const DtString& name, const DtDDMRegionSet& regionset, bool subscribeToClass);
508 
511  virtual void subscribeObjectClasses(const std::set<DtString>& objectClasses,
512  const DtSubscriptionListFile& sublist);
513 
516  virtual void subscribeInteractionClasses(const std::set<DtString>& interactionClasses, const DtSubscriptionListFile& sublist);
517 
518  protected:
519 
520  static void timeAdvanceGrantCb( const RtiTime&, void* simMan);
521  static void timeConstrainedEnableCb( const RtiTime&, void* simMan);
522  static void timeRegulationEnableCb( const RtiTime&, void* simMan);
523 
524  protected:
525 
526  DtLgrHlaSimDriver* mySimDriver;
527  DtLgrHlaMessageState* myMessageState;
528  DtLgrHlaSimInput* myInput;
529  DtLgrHlaSimOutput* myOutput;
530 
532  DtHlaObjectFactory* myDefaultObjectFactory;
533 
534  DtLgrOnlineFomDesc* myFomDescription;
535  bool myIgnoreAdvisories;
536  bool myPassiveSubscription;
537  bool myTimeAdvanceGrantRegisterFlag;
538  bool myIsTimeConstrainedFlag;
539  bool myIsTimeRegulatingFlag;
540  DtSubscriptionListFile* mySubscriptionList;
541  DtSubscriptionListFile* myPublicationList;
542  bool mySubscribedFlag;
543 
545  std::set<DtHlaTAFilter*> myTrafficAnalyzerFilters;
546 
548  bool myIsDDMEnabled;
549 
551  bool myTrafficAnalyzerEnabled;
552 
554  DtPlaybackRegionMode myPlaybackRegionMode;
555 
557  DtSubscribeRegionMode mySubscribeRegionMode;
558 
561  bool myPlaybackRegionDynamicAssociationEnabled;
562 
564  bool myPlaybackRegionDynamicExtentsEnabled;
565 
567  bool myRecordConveyedRegionsEnabled;
568 
570  bool myRequestUpdatesEnabled;
571 
574  bool mySubscribeUnspecifiedAttributesEnabled;
575 
577  bool mySubscribeToAllClassesEnabled;
578 
580  bool myPlaybackWithoutRegionsEnabled;
581 
583 
584  RtiTime* myFederationTime;
585  double myRequestedTime;
586  double myInitialFedTime;
587  bool myRequestingTimeAdvance;
588  bool myRequestingNextEvent;
589 
590  bool myConstrainOnRecord;
591  bool myConstrainOnPlayback;
592  bool myRegulateOnRecord;
593  bool myRegulateOnPlayback;
594  bool myTimeManagementEnabledFlag;
595  double myLookAheadTime;
596  bool myDisableTimeManagementTesting;
597  bool myAllowUnsubscribe;
598  double myDrainInputMaxTime;
599  double myDrainInputMinTime;
600 
601  DtString myDynamicNamePrefix;
602 
603  DtLgrHlaConfigData myConfigData;
604 
605  typedef std::map<DtString, DtDDMRegionSet> DtNameRegionMap;
606 
607  // Map name to global region.
608  // For 1.3, the name is the routing space.
609  // For 1516, the name is the concatenation of the dimension names used for the region.
610  DtNameRegionMap myGlobalRegions;
611 
612  // Map the object region name to the region instance
613  DtNameRegionMap myObjectRegions;
614 
615  // Map the interaction region name to the region instance
616  DtNameRegionMap myInteractionRegions;
617 
618  DtLgrFomWithRegions *myFomWithRegions;
619  };
620 
621  const DtString& DtPlaybackRegionModeString(DtPlaybackRegionMode mode);
622  const DtString& DtSubscribeRegionModeString(DtSubscribeRegionMode mode);
623 
624 }
625 
626 #endif
627 #endif

Document ID: Generated on Thu Apr 10 18:53:01 EDT 2014 from SVN revision 138105
Copyright © 2005-2012 VT MÄK. All Rights Reserved (www.mak.com)