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) const;
167 
173  virtual DtLgrFileInput* openPartialFileForCopying(
174  const DtLgrFileOutput* output, DtFilePosition firstPacket,
175  DtFilePosition lastPacket) const;
176 
178  virtual void initPlayback(DtLgrFileInput& input);
179 
180 
182  virtual DtMessageState* createState() const;
183 
185  virtual bool connect(DtExerciseConnInitializer& initializer);
186 
188  virtual void connectShared(DtExerciseConn* exConn);
189 
191  virtual void disconnect();
192 
193  typedef DtObjectPublisher* (DtPublisherCreator)();
194 
196  virtual bool ignoreAdvisories() const;
197 
199  virtual void setDrainInputMaxTime(double maxTime);
200 
202  virtual void setDrainInputMinTime(double minTime);
203 
205  virtual double drainInputMaxTime() const;
206 
208  virtual double drainInputMinTime() const;
209 
211  virtual void setPassiveSubscription(bool ignore);
212 
214  virtual bool passiveSubscription() const;
215 
217  virtual void setDdmEnabled( bool enableDdm );
218 
220  virtual bool ddmEnabled() const;
221 
223  virtual void setTrafficAnalyzerEnabled( bool enableTrafficAnalyzer );
224 
226  virtual bool trafficAnalyzerEnabled() const;
227 
230  virtual const DtLgrOnlineFomDesc* fomDescription() const;
231 
233  virtual DtHlaObjectFactory* defaultObjectFactory();
234 
236  virtual void setTimeManagementSettings(bool constrainOnRecord,
237  bool constrainOnPlayback,bool regulateOnRecord,bool regulateOnPlayback,
238  double lookAheadTime);
239 
241  virtual bool isTimeManagementEnabled() const;
242 
246  virtual bool enableTimeConstrained();
247 
249  virtual bool testTimeManagement();
250 
254  virtual bool disableTimeConstrained();
255 
257  virtual bool isTimeConstrained() const;
258 
262  virtual bool enableTimeRegulating(double lookAheadInterval);
263 
267  virtual bool disableTimeRegulating();
268 
270  virtual bool isTimeRegulating() const;
271 
273  virtual void registerTimeAdvanceGrant();
274 
276  virtual void unregisterTimeAdvanceGrant();
277 
280  virtual double requestTimeAdvance();
281 
283  virtual double requestAdvanceToNextEvent();
284 
287  virtual bool changeLookAheadTime(double time) ;
288 
290  virtual bool isTimeAdvanceGrantRegistered() const;
291 
295  virtual bool nextMessageRequest(bool available=false);
296 
298  virtual double lookAheadTime() const;
299 
301  virtual bool constrainOnRecord() const;
302 
304  virtual bool constrainOnPlayback() const;
305 
307  virtual bool regulateOnRecord() const;
308 
310  virtual bool regulateOnPlayback() const;
311 
313  virtual double fedTime() const;
314 
316  virtual double requestedTime() const;
317 
319  virtual double initialFedTime() const;
320 
322  virtual bool isTimeAdvancing() const;
323 
325  virtual bool isRequestingNextEvent() const;
326 
328  virtual bool isRequestingTimeAdvance() const;
329 
331  virtual void setDisableTimeManagementTest(bool disableTest);
332 
334  virtual void setAllowUnsubscribes(bool allowUnsubscribe);
335 
337  virtual bool allowUnsubscribes() const;
338 
339  //virtual bool subscribeInteractionWithRegion(
340 
342  virtual const DtString& dynamicNamePrefix() const;
343 
345  virtual void setDynamicNamePrefix(const DtString& dynamicNamePrefix);
346 
348  virtual DtLgrHlaSimDriver* simDriver();
349 
351  virtual const DtLgrHlaSimDriver* simDriver() const;
352 
353 
355  virtual bool testDdm() const;
356 
360  virtual bool addPlaybackRegionSetForObjectName(const DtString& objectName, const DtString& regionSetName);
361 
363  virtual void removePlaybackRegionSetForObjectName(const DtString& objectName);
364 
369  virtual unsigned int getPlaybackRegionSetForObjectName(DtString objectName,
370  DtDDMRegionSet& regionSet, bool cacheRegions=true);
371 
375  virtual bool addPlaybackRegionSetForInteractionClass(const DtString& className, const DtString& regionSetName);
376 
378  virtual void removePlaybackRegionSetForInteractionClass(const DtString& className);
379 
383  virtual unsigned int getPlaybackRegionSetForInteractionClass(DtString className,
384  DtDDMRegionSet& regionSet, bool cacheRegions=true);
385 
387  virtual void subscribeToList(const DtSubscriptionListFile& sublist);
388 
390  virtual void setPublicationList(const DtSubscriptionListFile& publist);
391 
393  virtual const DtSubscriptionListFile& publicationList() const;
394 
396  virtual void setConfigurationFileName(const DtString& filename);
397 
399  virtual DtLgrFomWithRegions *fomWithRegions();
400 
402  virtual MAKLogger::DtPlaybackRegionMode playbackRegionMode() const;
403 
405  virtual void setPlaybackRegionMode(MAKLogger::DtPlaybackRegionMode val);
406 
408  virtual MAKLogger::DtSubscribeRegionMode subscribeRegionMode() const;
409 
411  virtual void setSubscribeRegionMode(MAKLogger::DtSubscribeRegionMode val);
412 
414  virtual bool playbackRegionDynamicAssociationEnabled() const;
415 
417  virtual void setPlaybackRegionDynamicAssociationEnabled(bool val);
418 
420  virtual bool playbackRegionDynamicExtentsEnabled() const;
421 
423  virtual void setPlaybackRegionDynamicExtentsEnabled(bool val);
424 
426  virtual bool recordConveyedRegionsEnabled() const;
427 
429  virtual void setRecordConveyedRegionsEnabled(bool val);
430 
432  virtual bool requestUpdatesEnabled() const;
433 
435  virtual void setRequestUpdatesEnabled(bool val);
436 
438  virtual bool subscribeUnspecifiedAttributesEnabled() const;
439 
441  virtual void setSubscribeUnspecifiedAttributesEnabled(bool val);
442 
444  virtual bool playbackWithoutRegionsEnabled() const;
445 
447  virtual void setPlaybackWithoutRegionsEnabled(bool val);
448 
450  virtual bool subscribeToAllClassesEnabled() const;
451 
453  virtual void setSubscribeToAllClassesEnabled(bool val);
454 
455 
456  protected:
457 
458  virtual const DtLgrHlaConfigData& configData() const;
459 
463  virtual bool getSubscribeRegionSetForObjectClass(const DtString& classname, DtDDMRegionSet& regionSet) const;
464 
468  virtual bool getSubscribeRegionSetForInteractionClass(const DtString& classname, DtDDMRegionSet& regionSet) const;
469 
475  virtual bool getGlobalObjectRegionSet(const DtString& className, DtDDMRegionSet& regionSet);
476 
480  virtual bool getGlobalInteractionRegionSet(const DtString& className, DtDDMRegionSet& regionSet);
481 
484  virtual int drainInput(DtTime maxTime = -1, DtTime minTime = 0.0);
485 
486 #if DtHLA_1516
487  typedef RTI::LogicalTime RtiTime;
488  typedef RTI::LogicalTimeInterval RtiTimeInterval;
489 #else
490  typedef RTI::FedTime RtiTime;
491  typedef RTI::FedTime RtiTimeInterval;
492 #endif
493 
495  virtual void timeAdvanceGrant( const RtiTime&);
496  virtual void timeConstrainedEnable( const RtiTime&);
497  virtual void timeRegulationEnable( const RtiTime&);
498 
499  virtual void initializeFederationTime();
501 
503  virtual void setObjectClassSubscriptionState(const DtString& name, const DtDDMRegionSet& regionset, bool subscribeToClass);
504 
506  virtual void setInteractionClassSubscriptionState(const DtString& name, const DtDDMRegionSet& regionset, bool subscribeToClass);
507 
510  virtual void subscribeObjectClasses(const std::set<DtString>& objectClasses,
511  const DtSubscriptionListFile& sublist);
512 
515  virtual void subscribeInteractionClasses(const std::set<DtString>& interactionClasses, const DtSubscriptionListFile& sublist);
516 
517  protected:
518 
519  static void timeAdvanceGrantCb( const RtiTime&, void* simMan);
520  static void timeConstrainedEnableCb( const RtiTime&, void* simMan);
521  static void timeRegulationEnableCb( const RtiTime&, void* simMan);
522 
523  protected:
524 
525  DtLgrHlaSimDriver* mySimDriver;
526  DtLgrHlaMessageState* myMessageState;
527  DtLgrHlaSimInput* myInput;
528  DtLgrHlaSimOutput* myOutput;
529 
531  DtHlaObjectFactory* myDefaultObjectFactory;
532 
533  DtLgrOnlineFomDesc* myFomDescription;
534  bool myIgnoreAdvisories;
535  bool myPassiveSubscription;
536  bool myTimeAdvanceGrantRegisterFlag;
537  bool myIsTimeConstrainedFlag;
538  bool myIsTimeRegulatingFlag;
539  DtSubscriptionListFile* mySubscriptionList;
540  DtSubscriptionListFile* myPublicationList;
541  bool mySubscribedFlag;
542 
544  std::set<DtHlaTAFilter*> myTrafficAnalyzerFilters;
545 
547  bool myIsDDMEnabled;
548 
550  bool myTrafficAnalyzerEnabled;
551 
553  DtPlaybackRegionMode myPlaybackRegionMode;
554 
556  DtSubscribeRegionMode mySubscribeRegionMode;
557 
560  bool myPlaybackRegionDynamicAssociationEnabled;
561 
563  bool myPlaybackRegionDynamicExtentsEnabled;
564 
566  bool myRecordConveyedRegionsEnabled;
567 
569  bool myRequestUpdatesEnabled;
570 
573  bool mySubscribeUnspecifiedAttributesEnabled;
574 
576  bool mySubscribeToAllClassesEnabled;
577 
579  bool myPlaybackWithoutRegionsEnabled;
580 
582 
583  RtiTime* myFederationTime;
584  double myRequestedTime;
585  double myInitialFedTime;
586  bool myRequestingTimeAdvance;
587  bool myRequestingNextEvent;
588 
589  bool myConstrainOnRecord;
590  bool myConstrainOnPlayback;
591  bool myRegulateOnRecord;
592  bool myRegulateOnPlayback;
593  bool myTimeManagementEnabledFlag;
594  double myLookAheadTime;
595  bool myDisableTimeManagementTesting;
596  bool myAllowUnsubscribe;
597  double myDrainInputMaxTime;
598  double myDrainInputMinTime;
599 
600  DtString myDynamicNamePrefix;
601 
602  DtLgrHlaConfigData myConfigData;
603 
604  typedef std::map<DtString, DtDDMRegionSet> DtNameRegionMap;
605 
606  // Map name to global region.
607  // For 1.3, the name is the routing space.
608  // For 1516, the name is the concatenation of the dimension names used for the region.
609  DtNameRegionMap myGlobalRegions;
610 
611  // Map the object region name to the region instance
612  DtNameRegionMap myObjectRegions;
613 
614  // Map the interaction region name to the region instance
615  DtNameRegionMap myInteractionRegions;
616 
617  DtLgrFomWithRegions *myFomWithRegions;
618  };
619 
620  const DtString& DtPlaybackRegionModeString(DtPlaybackRegionMode mode);
621  const DtString& DtSubscribeRegionModeString(DtSubscribeRegionMode mode);
622 
623 }
624 
625 #endif
626 #endif

Document ID: Generated on Sun Dec 15 18:04:30 EST 2013 from SVN revision 134418
Copyright © 2005-2012 VT MÄK. All Rights Reserved (www.mak.com)