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 double fedTime() const;
330 
332  virtual double requestedTime() const;
333 
335  virtual double initialFedTime() const;
336 
338  virtual double timeAdvanced() const;
339 
341  virtual bool isTimeAdvancing() const;
342 
344  virtual bool isRequestingNextEvent() const;
345 
347  virtual bool isRequestingTimeAdvance() const;
348 
350  virtual void setDisableTimeManagementTest(bool disableTest);
351 
354  virtual bool isValidTime(const DtAbsoluteTime& packetTime) const;
355 
359  virtual bool setSendTime(DtAbsoluteTime sendTime);
360 
362  virtual void setAllowUnsubscribes(bool allowUnsubscribe);
363 
365  virtual bool allowUnsubscribes() const;
366 
367  //virtual bool subscribeInteractionWithRegion(
368 
370  virtual const DtString& dynamicNamePrefix() const;
371 
373  virtual void setDynamicNamePrefix(const DtString& dynamicNamePrefix);
374 
376  virtual DtLgrHlaSimDriver* simDriver();
377 
379  virtual const DtLgrHlaSimDriver* simDriver() const;
380 
381 
383  virtual bool testDdm() const;
384 
388  virtual bool addPlaybackRegionSetForObjectName(const DtString& objectName, const DtString& regionSetName);
389 
391  virtual void removePlaybackRegionSetForObjectName(const DtString& objectName);
392 
397  virtual unsigned int getPlaybackRegionSetForObjectName(DtString objectName,
398  DtDDMRegionSet& regionSet, bool cacheRegions=true);
399 
403  virtual bool addPlaybackRegionSetForInteractionClass(const DtString& className, const DtString& regionSetName);
404 
406  virtual void removePlaybackRegionSetForInteractionClass(const DtString& className);
407 
411  virtual unsigned int getPlaybackRegionSetForInteractionClass(DtString className,
412  DtDDMRegionSet& regionSet, bool cacheRegions=true);
413 
415  virtual void subscribeToList(const DtSubscriptionListFile& sublist);
416 
418  virtual void setPublicationList(const DtSubscriptionListFile& publist);
419 
421  virtual const DtSubscriptionListFile& publicationList() const;
422 
424  virtual void setConfigurationFileName(const DtString& filename);
425 
427  virtual DtLgrFomWithRegions *fomWithRegions();
428 
430  virtual MAKLogger::DtPlaybackRegionMode playbackRegionMode() const;
431 
433  virtual void setPlaybackRegionMode(MAKLogger::DtPlaybackRegionMode val);
434 
436  virtual MAKLogger::DtSubscribeRegionMode subscribeRegionMode() const;
437 
439  virtual void setSubscribeRegionMode(MAKLogger::DtSubscribeRegionMode val);
440 
442  virtual bool playbackRegionDynamicAssociationEnabled() const;
443 
445  virtual void setPlaybackRegionDynamicAssociationEnabled(bool val);
446 
448  virtual bool playbackRegionDynamicExtentsEnabled() const;
449 
451  virtual void setPlaybackRegionDynamicExtentsEnabled(bool val);
452 
454  virtual bool recordConveyedRegionsEnabled() const;
455 
457  virtual void setRecordConveyedRegionsEnabled(bool val);
458 
460  virtual bool requestUpdatesEnabled() const;
461 
463  virtual void setRequestUpdatesEnabled(bool val);
464 
466  virtual bool subscribeUnspecifiedAttributesEnabled() const;
467 
469  virtual void setSubscribeUnspecifiedAttributesEnabled(bool val);
470 
472  virtual bool playbackWithoutRegionsEnabled() const;
473 
475  virtual void setPlaybackWithoutRegionsEnabled(bool val);
476 
478  virtual bool subscribeToAllClassesEnabled() const;
479 
481  virtual void setSubscribeToAllClassesEnabled(bool val);
482 
483 
484  protected:
485 
486  virtual const DtLgrHlaConfigData& configData() const;
487 
491  virtual bool getSubscribeRegionSetForObjectClass(const DtString& classname, DtDDMRegionSet& regionSet) const;
492 
496  virtual bool getSubscribeRegionSetForInteractionClass(const DtString& classname, DtDDMRegionSet& regionSet) const;
497 
503  virtual bool getGlobalObjectRegionSet(const DtString& className, DtDDMRegionSet& regionSet);
504 
508  virtual bool getGlobalInteractionRegionSet(const DtString& className, DtDDMRegionSet& regionSet);
509 
512 
513  virtual int drainInput();
514  virtual int drainInput(DtTime maxTime, DtTime minTime);
516 
517 #if DtHLA_1516_EVOLVED
518  typedef RTI::LogicalTime RtiTime;
519  typedef RTI::LogicalTimeInterval RtiTimeInterval;
520  typedef HLAfloat64Time RtiTimeImpl;
521  typedef HLAfloat64Interval RtiTimeIntervalImpl;
522 #elif DtHLA_1516
523  typedef RTI::LogicalTime RtiTime;
524  typedef RTI::LogicalTimeInterval RtiTimeInterval;
525  typedef LogicalTimeImpl RtiTimeImpl;
526  typedef LogicalTimeIntervalImpl RtiTimeIntervalImpl;
527 #else
528  typedef RTI::FedTime RtiTime;
529  typedef RTI::FedTime RtiTimeInterval;
530  typedef RTIfedTime RtiTimeImpl;
531  typedef RTIfedTime RtiTimeIntervalImpl;
532 #endif
533 
535  virtual void timeAdvanceGrant( const RtiTime&);
536  virtual void timeConstrainedEnable( const RtiTime&);
537  virtual void timeRegulationEnable( const RtiTime&);
539  virtual bool invokeEnableTimeConstrained(bool checkLongOperation, bool postWarnings);
540  virtual bool invokeFlushQueue(RtiTimeImpl& newTime);
541  virtual bool invokeQueryMinNextEventTime(RtiTimeImpl& nextTime);
542  virtual bool invokeNextMessageRequest(RtiTimeImpl& nextTime, bool available);
543  virtual bool invokeTimeAdvanceRequest(RtiTimeImpl& nextTime, bool available);
544  virtual void initializeFederationTime();
545  virtual bool invokeChangeLookAheadTime(double time);
546  virtual bool invokeQueryLogicalTime(RtiTimeImpl&);
547 
549 
551  virtual void setObjectClassSubscriptionState(const DtString& name, const DtDDMRegionSet& regionset, bool subscribeToClass);
552 
554  virtual void setInteractionClassSubscriptionState(const DtString& name, const DtDDMRegionSet& regionset, bool subscribeToClass);
555 
558  virtual void subscribeObjectClasses(const std::set<DtString>& objectClasses,
559  const DtSubscriptionListFile& sublist);
560 
563  virtual void subscribeInteractionClasses(const std::set<DtString>& interactionClasses, const DtSubscriptionListFile& sublist);
564 
565  virtual void rtiErrorCb(const char* label);
566 
567  protected:
568 
569  static void timeAdvanceGrantCb( const RtiTime&, void* simMan);
570  static void timeConstrainedEnableCb( const RtiTime&, void* simMan);
571  static void timeRegulationEnableCb( const RtiTime&, void* simMan);
572  static void rtiErrorCb(const char* label, void* simMan);
573 
574  protected:
575 
576  DtLgrHlaSimDriver* mySimDriver;
577  DtLgrHlaMessageState* myMessageState;
578  DtLgrHlaSimInput* myInput;
579  DtLgrHlaSimOutput* myOutput;
580 
582  DtHlaObjectFactory* myDefaultObjectFactory;
583 
584  DtLgrOnlineFomDesc* myFomDescription;
585  bool myIgnoreAdvisories;
586  bool myPassiveSubscription;
587  bool myTimeAdvanceGrantRegisterFlag;
588  bool myIsTimeConstrainedFlag;
589  bool myIsTimeRegulatingFlag;
590  DtSubscriptionListFile* mySubscriptionList;
591  DtSubscriptionListFile* myPublicationList;
592  bool mySubscribedFlag;
593 
595  std::set<DtHlaTAFilter*> myTrafficAnalyzerFilters;
596 
598  bool myIsDDMEnabled;
599 
601  bool myTrafficAnalyzerEnabled;
602 
604  DtPlaybackRegionMode myPlaybackRegionMode;
605 
607  DtSubscribeRegionMode mySubscribeRegionMode;
608 
611  bool myPlaybackRegionDynamicAssociationEnabled;
612 
614  bool myPlaybackRegionDynamicExtentsEnabled;
615 
617  bool myRecordConveyedRegionsEnabled;
618 
620  bool myRequestUpdatesEnabled;
621 
624  bool mySubscribeUnspecifiedAttributesEnabled;
625 
627  bool mySubscribeToAllClassesEnabled;
628 
630  bool myPlaybackWithoutRegionsEnabled;
631 
633  bool mySendOnlyUpdatedValues;
634 
636  bool myRtiError;
637 
638  RtiTimeImpl* myFederationTime;
639  RtiTimeIntervalImpl* myTimeAdvanced;
640  double myEpsilon;
641  double myRequestedTime;
642  double myInitialFedTime;
643  bool myRequestingTimeAdvance;
644  bool myRequestingNextEvent;
645 
646  bool myConstrainOnRecord;
647  bool myConstrainOnPlayback;
648  bool myRegulateOnRecord;
649  bool myRegulateOnPlayback;
650  bool myTimeManagementEnabledFlag;
651  double myLookAheadTime;
652  double myWorkingLookAhead;
653  bool myDisableTimeManagementTesting;
654  bool myAllowUnsubscribe;
655  double myDrainInputMaxTime;
656  double myDrainInputMinTime;
657 
658  DtString myDynamicNamePrefix;
659 
660  DtLgrHlaConfigData myConfigData;
661 
662  typedef std::map<DtString, DtDDMRegionSet> DtNameRegionMap;
663 
664  // Map name to global region.
665  // For 1.3, the name is the routing space.
666  // For 1516, the name is the concatenation of the dimension names used for the region.
667  DtNameRegionMap myGlobalRegions;
668 
669  // Map the object region name to the region instance
670  DtNameRegionMap myObjectRegions;
671 
672  // Map the interaction region name to the region instance
673  DtNameRegionMap myInteractionRegions;
674 
675  DtLgrFomWithRegions *myFomWithRegions;
676  };
677 
678  const DtString& DtPlaybackRegionModeString(DtPlaybackRegionMode mode);
679  const DtString& DtSubscribeRegionModeString(DtSubscribeRegionMode mode);
680 
681 }
682 
683 #endif
684 #endif

Document ID: Generated on Thu Apr 7 20:50:59 EDT 2016 from SVN revision 163818
Copyright © 2005-2012 VT MÄK. All Rights Reserved (www.mak.com)