MAK Data Logger API Documentation for DIS
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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/lgrSim.h>
16 #include "lgrBaseSimManager.h"
19 #include "subscriptionListFile.h"
20 
21 #if DtHLA_1516
22 #if DtHLA_1516_EVOLVED
23 #include <RTI/time/HLAfloat64Time.h>
24 #include <RTI/time/HLAfloat64Interval.h>
25 #else
26 #include <RTI/logicalTimeImpl.h>
27 #include <RTI/logicalTimeIntervalImpl.h>
28 #endif
29 #else
30 #include <fedtime.hh>
31 #endif
32 
33 #include <vl/rtiNamespace.h>
34 #include <vl/geodeticRegion.h>
35 
36 #include <set>
37 #include <vector>
38 
39 class DtObjectPublisher;
40 class DtExerciseConnInitializer;
41 class DtExerciseConn;
42 class DtHlaObjectFactory;
43 class DtHlaObject;
44 class DtStateRepository;
45 class DtInteraction;
46 class DtHlaTAFilter;
47 
48 namespace MAKTrafficClientServerExConn
49 {
50  class DtServerExerciseConnection;
51 }
52 
53 namespace MAKLogger
54 {
55  class DtLogger;
56  class DtLgrOnlineFomDesc;
57  class DtLgrClock;
58  class DtMessageBuffer;
59  class DtLgrHlaMessageState;
60  class DtLgrHlaSimOutput;
61  class DtLgrHlaSimInput;
62  class DtLgrHlaTimeProvider;
63  class DtLgrHlaSimDriver;
64  class DtLgrFomWithRegions;
65 
67  enum DtPlaybackRegionMode
68  {
69  DtPlaybackRegionNotEnabled,
70  DtPlaybackRegionsUseData,
71  DtPlaybackRegionsUseConveyedExtents
72  };
73 
75  enum DtSubscribeRegionMode
76  {
77  DtSubscribeRegionNotEnabled,
78  DtSubscribeRegionsAreSpecified,
79  DtSubscribeRegionsAreGlobal
80  };
81 
84  class DT_DLL_LGRSIM DtLgrHlaSimulationManager : public DtLgrBaseSimManager
85  {
86  public:
87 
88 
89  DT_VIRTUAL_CTR(DtLgrHlaSimulationManager,(DtLogger& logger,
90  DtLgrHlaSimDriver* simDriverPtr))
91  virtual ~DtLgrHlaSimulationManager();
92 
94  virtual void setExerciseConn(DtExerciseConn* exconn);
95 
97  virtual void tick();
98 
100  virtual bool isConnected() const;
101 
103  virtual void setSubscriptionListToAll();
104 
106  virtual void setObjectSubscriptionList(const std::vector<DtString>& objectClasses);
107 
109  virtual void setInteractionSubscriptionList(const std::vector<DtString>& interactionClasses);
110 
112  virtual void setSubscriptionList(const DtSubscriptionListFile& list);
113 
115  virtual const DtSubscriptionListFile& subscriptionList() const;
116 
118  virtual std::vector<DtString> objectSubscriptionList() const;
119 
121  virtual std::vector<DtString> interactionSubscriptionList() const;
122 
124  virtual void subscribeToData();
125 
127  virtual void unsubscribeToData();
128 
130  virtual void addTrafficAnalyzerFilter(DtHlaTAFilter* taFilter);
131 
133  virtual void removeTrafficAnalyzerFilter(DtHlaTAFilter* taFilter);
134 
137  virtual bool evaluateTrafficAnalyzerFilters(
138  const DtStateRepository& stateRep, const DtHlaObject& obj);
139 
142  virtual bool evaluateTrafficAnalyzerFilters(const DtInteraction& interaction);
143 
145 
146  virtual const DtLgrSimInput* input() const;
147  virtual DtLgrSimInput* input();
149 
151 
152  virtual const DtLgrSimOutput* output() const;
153  virtual DtLgrSimOutput* output();
155 
157 
158  virtual const DtMessageState* state() const;
159  virtual DtMessageState* state();
161 
165  virtual DtLgrFileInput* openFileForInput(const DtString& filename) const;
166 
167 
171  virtual DtLgrFileOutput* openFileForCopying(const DtString& filename,
172  const DtLgrFileInput* input) const;
173 
178  virtual DtLgrFileOutput* openFileForOutput(const DtString& filename,
179  const DtString& description) const;
180 
186  virtual DtLgrFileInput* openPartialFileForCopying(
187  const DtLgrFileOutput* output, DtFilePosition firstPacket,
188  DtFilePosition lastPacket) const;
189 
191  virtual void initPlayback(DtLgrFileInput& input);
192 
193 
195  virtual DtMessageState* createState() const;
196 
199  virtual bool connect(DtExerciseConnInitializer& initializer, DtString& failureReason);
200 
202  virtual void connectShared(DtExerciseConn* exConn);
203 
205  virtual void disconnect();
206 
207  typedef DtObjectPublisher* (DtPublisherCreator)();
208 
210  virtual bool ignoreAdvisories() const;
211 
213  virtual void setDrainInputMaxTime(double maxTime);
214 
216  virtual void setDrainInputMinTime(double minTime);
217 
219  virtual double drainInputMaxTime() const;
220 
222  virtual double drainInputMinTime() const;
223 
225  virtual void setPassiveSubscription(bool ignore);
226 
228  virtual bool passiveSubscription() const;
229 
231  virtual void setDdmEnabled( bool enableDdm );
232 
234  virtual bool ddmEnabled() const;
235 
237  virtual void setTrafficAnalyzerEnabled( bool enableTrafficAnalyzer );
238 
240  virtual bool trafficAnalyzerEnabled() const;
241 
243 
244  virtual void setSendOnlyUpdatedValues(bool updatesOnly);
245  virtual bool sendOnlyUpdatedValues() const;
247 
250  virtual const DtLgrOnlineFomDesc* fomDescription() const;
251 
253  virtual DtHlaObjectFactory* defaultObjectFactory();
254 
256  virtual void setTimeManagementSettings(bool constrainOnRecord,
257  bool constrainOnPlayback,bool regulateOnRecord,bool regulateOnPlayback,
258  double lookAheadTime);
259 
261  virtual bool isTimeManagementEnabled() const;
262 
266  virtual bool enableTimeConstrained();
267 
269  virtual bool testTimeManagement();
270 
274  virtual bool disableTimeConstrained();
275 
277  virtual bool isTimeConstrained() const;
278 
282  virtual bool enableTimeRegulating(double lookAheadInterval);
283 
287  virtual bool disableTimeRegulating();
288 
290  virtual bool isTimeRegulating() const;
291 
293  virtual void registerTimeAdvanceGrant();
294 
296  virtual void unregisterTimeAdvanceGrant();
297 
300  virtual double requestTimeAdvance();
301 
303  virtual double requestAdvanceToNextEvent();
304 
306  virtual bool isTimeAdvanceGrantRegistered() const;
307 
309  virtual double lookAheadTime() const;
310 
314  virtual double workingLookAheadTime() const;
315 
317  virtual bool constrainOnRecord() const;
318 
320  virtual bool constrainOnPlayback() const;
321 
323  virtual bool regulateOnRecord() const;
324 
326  virtual bool regulateOnPlayback() const;
327 
329  virtual void setInitialTime(DtAbsoluteTime initialTime);
330 
332  virtual double fedTime() const;
333 
335  virtual double requestedTime() const;
336 
338  virtual double initialFedTime() const;
339 
341  virtual double timeAdvanced() const;
342 
344  virtual bool isTimeAdvancing() const;
345 
347  virtual bool isRequestingNextEvent() const;
348 
350  virtual bool isRequestingTimeAdvance() const;
351 
353  virtual void setDisableTimeManagementTest(bool disableTest);
354 
357  virtual bool isValidTime(const DtAbsoluteTime& packetTime) const;
358 
360  virtual void setAllowUnsubscribes(bool allowUnsubscribe);
361 
363  virtual bool allowUnsubscribes() const;
364 
365  //virtual bool subscribeInteractionWithRegion(
366 
368  virtual const DtString& dynamicNamePrefix() const;
369 
371  virtual void setDynamicNamePrefix(const DtString& dynamicNamePrefix);
372 
374  virtual DtLgrHlaSimDriver* simDriver();
375 
377  virtual const DtLgrHlaSimDriver* simDriver() const;
378 
379 
381  virtual bool testDdm() const;
382 
386  virtual bool addPlaybackRegionSetForObjectName(const DtString& objectName, const DtString& regionSetName);
387 
389  virtual void removePlaybackRegionSetForObjectName(const DtString& objectName);
390 
395  virtual unsigned int getPlaybackRegionSetForObjectName(DtString objectName,
396  DtDDMRegionSet& regionSet, bool cacheRegions=true);
397 
401  virtual bool addPlaybackRegionSetForInteractionClass(const DtString& className, const DtString& regionSetName);
402 
404  virtual void removePlaybackRegionSetForInteractionClass(const DtString& className);
405 
409  virtual unsigned int getPlaybackRegionSetForInteractionClass(DtString className,
410  DtDDMRegionSet& regionSet, bool cacheRegions=true);
411 
413  virtual void subscribeToList(const DtSubscriptionListFile& sublist);
414 
416  virtual void setPublicationList(const DtSubscriptionListFile& publist);
417 
419  virtual const DtSubscriptionListFile& publicationList() const;
420 
422  virtual void setConfigurationFileName(const DtString& filename);
423 
425  virtual DtLgrFomWithRegions *fomWithRegions();
426 
428  virtual MAKLogger::DtPlaybackRegionMode playbackRegionMode() const;
429 
431  virtual void setPlaybackRegionMode(MAKLogger::DtPlaybackRegionMode val);
432 
434  virtual MAKLogger::DtSubscribeRegionMode subscribeRegionMode() const;
435 
437  virtual void setSubscribeRegionMode(MAKLogger::DtSubscribeRegionMode val);
438 
440  virtual bool playbackRegionDynamicAssociationEnabled() const;
441 
443  virtual void setPlaybackRegionDynamicAssociationEnabled(bool val);
444 
446  virtual bool playbackRegionDynamicExtentsEnabled() const;
447 
449  virtual void setPlaybackRegionDynamicExtentsEnabled(bool val);
450 
452  virtual bool recordConveyedRegionsEnabled() const;
453 
455  virtual void setRecordConveyedRegionsEnabled(bool val);
456 
458  virtual bool requestUpdatesEnabled() const;
459 
461  virtual void setRequestUpdatesEnabled(bool val);
462 
464  virtual bool subscribeUnspecifiedAttributesEnabled() const;
465 
467  virtual void setSubscribeUnspecifiedAttributesEnabled(bool val);
468 
470  virtual bool playbackWithoutRegionsEnabled() const;
471 
473  virtual void setPlaybackWithoutRegionsEnabled(bool val);
474 
476  virtual bool subscribeToAllClassesEnabled() const;
477 
479  virtual void setSubscribeToAllClassesEnabled(bool val);
480 
481 
482  protected:
483 
484  virtual const DtLgrHlaConfigData& configData() const;
485 
489  virtual bool getSubscribeRegionSetForObjectClass(const DtString& classname, DtDDMRegionSet& regionSet) const;
490 
494  virtual bool getSubscribeRegionSetForInteractionClass(const DtString& classname, DtDDMRegionSet& regionSet) const;
495 
501  virtual bool getGlobalObjectRegionSet(const DtString& className, DtDDMRegionSet& regionSet);
502 
506  virtual bool getGlobalInteractionRegionSet(const DtString& className, DtDDMRegionSet& regionSet);
507 
510 
511  virtual int drainInput();
512  virtual int drainInput(DtTime maxTime, DtTime minTime);
514 
515 #if DtHLA_1516_EVOLVED
516  typedef RTI::LogicalTime RtiTime;
517  typedef RTI::LogicalTimeInterval RtiTimeInterval;
518  typedef HLAfloat64Time RtiTimeImpl;
519  typedef HLAfloat64Interval RtiTimeIntervalImpl;
520 #elif DtHLA_1516
521  typedef RTI::LogicalTime RtiTime;
522  typedef RTI::LogicalTimeInterval RtiTimeInterval;
523  typedef LogicalTimeImpl RtiTimeImpl;
524  typedef LogicalTimeIntervalImpl RtiTimeIntervalImpl;
525 #else
526  typedef RTI::FedTime RtiTime;
527  typedef RTI::FedTime RtiTimeInterval;
528  typedef RTIfedTime RtiTimeImpl;
529  typedef RTIfedTime RtiTimeIntervalImpl;
530 #endif
531 
533  virtual void timeAdvanceGrant( const RtiTime&);
534  virtual void timeConstrainedEnable( const RtiTime&);
535  virtual void timeRegulationEnable( const RtiTime&);
537  virtual bool invokeEnableTimeConstrained(bool checkLongOperation, bool postWarnings);
538  virtual bool invokeFlushQueue(RtiTimeImpl& newTime);
539  virtual bool invokeQueryMinNextEventTime(RtiTimeImpl& nextTime);
540  virtual bool invokeNextMessageRequest(RtiTimeImpl& nextTime, bool available);
541  virtual bool invokeTimeAdvanceRequest(RtiTimeImpl& nextTime, bool available);
542  virtual void initializeFederationTime();
543  virtual bool invokeChangeLookAheadTime(double time);
544  virtual bool invokeQueryLogicalTime(RtiTimeImpl&);
545 
547 
549  virtual void setObjectClassSubscriptionState(const DtString& name, const DtDDMRegionSet& regionset, bool subscribeToClass);
550 
552  virtual void setInteractionClassSubscriptionState(const DtString& name, const DtDDMRegionSet& regionset, bool subscribeToClass);
553 
556  virtual void subscribeObjectClasses(const std::set<DtString>& objectClasses,
557  const DtSubscriptionListFile& sublist);
558 
561  virtual void subscribeInteractionClasses(const std::set<DtString>& interactionClasses, const DtSubscriptionListFile& sublist);
562 
563  virtual void rtiErrorCb(const char* label);
564 
565  protected:
566 
567  static void timeAdvanceGrantCb( const RtiTime&, void* simMan);
568  static void timeConstrainedEnableCb( const RtiTime&, void* simMan);
569  static void timeRegulationEnableCb( const RtiTime&, void* simMan);
570  static void rtiErrorCb(const char* label, void* simMan);
571 
572  protected:
573 
574  DtLgrHlaSimDriver* mySimDriver;
575  DtLgrHlaMessageState* myMessageState;
576  DtLgrHlaSimInput* myInput;
577  DtLgrHlaSimOutput* myOutput;
578 
580  DtHlaObjectFactory* myDefaultObjectFactory;
581 
582  DtLgrOnlineFomDesc* myFomDescription;
583  bool myIgnoreAdvisories;
584  bool myPassiveSubscription;
585  bool myTimeAdvanceGrantRegisterFlag;
586  bool myIsTimeConstrainedFlag;
587  bool myIsTimeRegulatingFlag;
588  DtSubscriptionListFile* mySubscriptionList;
589  DtSubscriptionListFile* myPublicationList;
590  bool mySubscribedFlag;
591  DtLgrHlaTimeProvider* myHlaTimeProvider;
592 
594  std::set<DtHlaTAFilter*> myTrafficAnalyzerFilters;
595 
597  bool myIsDDMEnabled;
598 
600  bool myTrafficAnalyzerEnabled;
601 
603  DtPlaybackRegionMode myPlaybackRegionMode;
604 
606  DtSubscribeRegionMode mySubscribeRegionMode;
607 
610  bool myPlaybackRegionDynamicAssociationEnabled;
611 
613  bool myPlaybackRegionDynamicExtentsEnabled;
614 
616  bool myRecordConveyedRegionsEnabled;
617 
619  bool myRequestUpdatesEnabled;
620 
623  bool mySubscribeUnspecifiedAttributesEnabled;
624 
626  bool mySubscribeToAllClassesEnabled;
627 
629  bool myPlaybackWithoutRegionsEnabled;
630 
632  bool mySendOnlyUpdatedValues;
633 
635  bool myRtiError;
636 
637  RtiTimeImpl* myFederationTime;
638  RtiTimeIntervalImpl* myTimeAdvanced;
639  double myEpsilon;
640  double myRequestedTime;
641  double myInitialFedTime;
642  bool myRequestingTimeAdvance;
643  bool myRequestingNextEvent;
644 
645  bool myConstrainOnRecord;
646  bool myConstrainOnPlayback;
647  bool myRegulateOnRecord;
648  bool myRegulateOnPlayback;
649  bool myTimeManagementEnabledFlag;
650  double myLookAheadTime;
651  double myWorkingLookAhead;
652  bool myDisableTimeManagementTesting;
653  bool myAllowUnsubscribe;
654  double myDrainInputMaxTime;
655  double myDrainInputMinTime;
656 
657  DtString myDynamicNamePrefix;
658 
659  DtLgrHlaConfigData myConfigData;
660 
661  typedef std::map<DtString, DtDDMRegionSet> DtNameRegionMap;
662 
663  // Map name to global region.
664  // For 1.3, the name is the routing space.
665  // For 1516, the name is the concatenation of the dimension names used for the region.
666  DtNameRegionMap myGlobalRegions;
667 
668  // Map the object region name to the region instance
669  DtNameRegionMap myObjectRegions;
670 
671  // Map the interaction region name to the region instance
672  DtNameRegionMap myInteractionRegions;
673 
674  DtLgrFomWithRegions *myFomWithRegions;
675  };
676 
677  const DtString& DtPlaybackRegionModeString(DtPlaybackRegionMode mode);
678  const DtString& DtSubscribeRegionModeString(DtSubscribeRegionMode mode);
679 
680 }
681 
682 #endif
683 #endif

Document ID: Generated on Tue Aug 1 09:00:26 EDT 2017 from SVN revision 179128
Copyright © 2017 VT MÄK. All Rights Reserved (www.mak.com)