10 #ifndef lgrHlaSimManager_H_
11 #define lgrHlaSimManager_H_
21 #include <vl/rtiNamespace.h>
22 #include <vl/geodeticRegion.h>
27 class DtObjectPublisher;
28 class DtExerciseConnInitializer;
30 class DtHlaObjectFactory;
32 class DtGenericStateRepository;
36 namespace MAKTrafficClientServerExConn
38 class DtServerExerciseConnection;
44 class DtLgrOnlineFomDesc;
46 class DtMessageBuffer;
47 class DtLgrHlaMessageState;
48 class DtLgrHlaSimOutput;
49 class DtLgrHlaSimInput;
50 class DtLgrHlaTimeProvider;
51 class DtLgrHlaSimDriver;
52 class DtLgrFomWithRegions;
55 enum DtPlaybackRegionMode
57 DtPlaybackRegionNotEnabled,
58 DtPlaybackRegionsUseData,
59 DtPlaybackRegionsUseConveyedExtents
63 enum DtSubscribeRegionMode
65 DtSubscribeRegionNotEnabled,
66 DtSubscribeRegionsAreSpecified,
67 DtSubscribeRegionsAreGlobal
72 class DT_DLL_LGRSIM DtLgrHlaSimulationManager :
public DtLgrBaseSimManager
78 DtLgrHlaSimDriver* simDriverPtr))
79 virtual ~DtLgrHlaSimulationManager();
88 virtual bool isConnected()
const;
91 virtual void setSubscriptionListToAll();
94 virtual void setObjectSubscriptionList(
const std::vector<DtString>& objectClasses);
97 virtual void setInteractionSubscriptionList(
const std::vector<DtString>& interactionClasses);
100 virtual void setSubscriptionList(
const DtSubscriptionListFile& list);
103 virtual const DtSubscriptionListFile& subscriptionList()
const;
106 virtual std::vector<DtString> objectSubscriptionList()
const;
109 virtual std::vector<DtString> interactionSubscriptionList()
const;
112 virtual void subscribeToData();
115 virtual void unsubscribeToData();
118 virtual void addTrafficAnalyzerFilter(
DtHlaTAFilter* taFilter);
121 virtual void removeTrafficAnalyzerFilter(
DtHlaTAFilter* taFilter);
125 virtual bool evaluateTrafficAnalyzerFilters(
126 const DtGenericStateRepository& stateRep,
const DtHlaObject& obj);
130 virtual bool evaluateTrafficAnalyzerFilters(
const DtInteraction& interaction);
134 virtual const DtLgrSimInput* input()
const;
135 virtual DtLgrSimInput* input();
140 virtual const DtLgrSimOutput* output()
const;
141 virtual DtLgrSimOutput* output();
146 virtual const DtMessageState* state()
const;
147 virtual DtMessageState* state();
153 virtual DtLgrFileInput* openFileForInput(
const DtString& filename)
const;
159 virtual DtLgrFileOutput* openFileForCopying(
const DtString& filename,
160 const DtLgrFileInput* input)
const;
166 virtual DtLgrFileOutput* openFileForOutput(
const DtString& filename,
167 const DtString& description)
const;
174 virtual DtLgrFileInput* openPartialFileForCopying(
179 virtual void initPlayback(DtLgrFileInput& input);
183 virtual DtMessageState* createState()
const;
186 virtual bool connect(DtExerciseConnInitializer& initializer);
192 virtual void disconnect();
194 typedef DtObjectPublisher* (DtPublisherCreator)();
197 virtual bool ignoreAdvisories()
const;
200 virtual void setDrainInputMaxTime(
double maxTime);
203 virtual void setDrainInputMinTime(
double minTime);
206 virtual double drainInputMaxTime()
const;
209 virtual double drainInputMinTime()
const;
212 virtual void setPassiveSubscription(
bool ignore);
215 virtual bool passiveSubscription()
const;
218 virtual void setDdmEnabled(
bool enableDdm );
221 virtual bool ddmEnabled()
const;
224 virtual void setTrafficAnalyzerEnabled(
bool enableTrafficAnalyzer );
227 virtual bool trafficAnalyzerEnabled()
const;
231 virtual const DtLgrOnlineFomDesc* fomDescription()
const;
234 virtual DtHlaObjectFactory* defaultObjectFactory();
237 virtual void setTimeManagementSettings(
bool constrainOnRecord,
238 bool constrainOnPlayback,
bool regulateOnRecord,
bool regulateOnPlayback,
239 double lookAheadTime);
242 virtual bool isTimeManagementEnabled()
const;
247 virtual bool enableTimeConstrained();
250 virtual bool testTimeManagement();
255 virtual bool disableTimeConstrained();
258 virtual bool isTimeConstrained()
const;
263 virtual bool enableTimeRegulating(
double lookAheadInterval);
268 virtual bool disableTimeRegulating();
271 virtual bool isTimeRegulating()
const;
274 virtual void registerTimeAdvanceGrant();
277 virtual void unregisterTimeAdvanceGrant();
281 virtual double requestTimeAdvance();
284 virtual double requestAdvanceToNextEvent();
288 virtual bool changeLookAheadTime(
double time) ;
291 virtual bool isTimeAdvanceGrantRegistered()
const;
296 virtual bool nextMessageRequest(
bool available=
false);
299 virtual double lookAheadTime()
const;
302 virtual bool constrainOnRecord()
const;
305 virtual bool constrainOnPlayback()
const;
308 virtual bool regulateOnRecord()
const;
311 virtual bool regulateOnPlayback()
const;
314 virtual double fedTime()
const;
317 virtual double requestedTime()
const;
320 virtual double initialFedTime()
const;
323 virtual bool isTimeAdvancing()
const;
326 virtual bool isRequestingNextEvent()
const;
329 virtual bool isRequestingTimeAdvance()
const;
332 virtual void setDisableTimeManagementTest(
bool disableTest);
335 virtual void setAllowUnsubscribes(
bool allowUnsubscribe);
338 virtual bool allowUnsubscribes()
const;
343 virtual const DtString& dynamicNamePrefix()
const;
346 virtual void setDynamicNamePrefix(
const DtString& dynamicNamePrefix);
349 virtual DtLgrHlaSimDriver* simDriver();
352 virtual const DtLgrHlaSimDriver* simDriver()
const;
356 virtual bool testDdm()
const;
361 virtual bool addPlaybackRegionSetForObjectName(
const DtString& objectName,
const DtString& regionSetName);
364 virtual void removePlaybackRegionSetForObjectName(
const DtString& objectName);
370 virtual unsigned int getPlaybackRegionSetForObjectName(DtString objectName,
371 DtDDMRegionSet& regionSet,
bool cacheRegions=
true);
376 virtual bool addPlaybackRegionSetForInteractionClass(
const DtString& className,
const DtString& regionSetName);
379 virtual void removePlaybackRegionSetForInteractionClass(
const DtString& className);
384 virtual unsigned int getPlaybackRegionSetForInteractionClass(DtString className,
385 DtDDMRegionSet& regionSet,
bool cacheRegions=
true);
388 virtual void subscribeToList(
const DtSubscriptionListFile& sublist);
391 virtual void setPublicationList(
const DtSubscriptionListFile& publist);
394 virtual const DtSubscriptionListFile& publicationList()
const;
397 virtual void setConfigurationFileName(
const DtString& filename);
400 virtual DtLgrFomWithRegions *fomWithRegions();
403 virtual MAKLogger::DtPlaybackRegionMode playbackRegionMode()
const;
406 virtual void setPlaybackRegionMode(MAKLogger::DtPlaybackRegionMode val);
409 virtual MAKLogger::DtSubscribeRegionMode subscribeRegionMode()
const;
412 virtual void setSubscribeRegionMode(MAKLogger::DtSubscribeRegionMode val);
415 virtual bool playbackRegionDynamicAssociationEnabled()
const;
418 virtual void setPlaybackRegionDynamicAssociationEnabled(
bool val);
421 virtual bool playbackRegionDynamicExtentsEnabled()
const;
424 virtual void setPlaybackRegionDynamicExtentsEnabled(
bool val);
427 virtual bool recordConveyedRegionsEnabled()
const;
430 virtual void setRecordConveyedRegionsEnabled(
bool val);
433 virtual bool requestUpdatesEnabled()
const;
436 virtual void setRequestUpdatesEnabled(
bool val);
439 virtual bool subscribeUnspecifiedAttributesEnabled()
const;
442 virtual void setSubscribeUnspecifiedAttributesEnabled(
bool val);
445 virtual bool playbackWithoutRegionsEnabled()
const;
448 virtual void setPlaybackWithoutRegionsEnabled(
bool val);
451 virtual bool subscribeToAllClassesEnabled()
const;
454 virtual void setSubscribeToAllClassesEnabled(
bool val);
459 virtual const DtLgrHlaConfigData& configData()
const;
464 virtual bool getSubscribeRegionSetForObjectClass(
const DtString& classname, DtDDMRegionSet& regionSet)
const;
469 virtual bool getSubscribeRegionSetForInteractionClass(
const DtString& classname, DtDDMRegionSet& regionSet)
const;
476 virtual bool getGlobalObjectRegionSet(
const DtString& className, DtDDMRegionSet& regionSet);
481 virtual bool getGlobalInteractionRegionSet(
const DtString& className, DtDDMRegionSet& regionSet);
485 virtual int drainInput(DtTime maxTime = -1, DtTime minTime = 0.0);
488 typedef RTI::LogicalTime RtiTime;
489 typedef RTI::LogicalTimeInterval RtiTimeInterval;
491 typedef RTI::FedTime RtiTime;
492 typedef RTI::FedTime RtiTimeInterval;
496 virtual void timeAdvanceGrant(
const RtiTime&);
497 virtual void timeConstrainedEnable(
const RtiTime&);
498 virtual void timeRegulationEnable(
const RtiTime&);
500 virtual void initializeFederationTime();
504 virtual void setObjectClassSubscriptionState(
const DtString& name,
const DtDDMRegionSet& regionset,
bool subscribeToClass);
507 virtual void setInteractionClassSubscriptionState(
const DtString& name,
const DtDDMRegionSet& regionset,
bool subscribeToClass);
511 virtual void subscribeObjectClasses(
const std::set<DtString>& objectClasses,
512 const DtSubscriptionListFile& sublist);
516 virtual void subscribeInteractionClasses(
const std::set<DtString>& interactionClasses,
const DtSubscriptionListFile& sublist);
520 static void timeAdvanceGrantCb(
const RtiTime&,
void* simMan);
521 static void timeConstrainedEnableCb(
const RtiTime&,
void* simMan);
522 static void timeRegulationEnableCb(
const RtiTime&,
void* simMan);
526 DtLgrHlaSimDriver* mySimDriver;
527 DtLgrHlaMessageState* myMessageState;
528 DtLgrHlaSimInput* myInput;
529 DtLgrHlaSimOutput* myOutput;
532 DtHlaObjectFactory* myDefaultObjectFactory;
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;
545 std::set<DtHlaTAFilter*> myTrafficAnalyzerFilters;
551 bool myTrafficAnalyzerEnabled;
554 DtPlaybackRegionMode myPlaybackRegionMode;
557 DtSubscribeRegionMode mySubscribeRegionMode;
561 bool myPlaybackRegionDynamicAssociationEnabled;
564 bool myPlaybackRegionDynamicExtentsEnabled;
567 bool myRecordConveyedRegionsEnabled;
570 bool myRequestUpdatesEnabled;
574 bool mySubscribeUnspecifiedAttributesEnabled;
577 bool mySubscribeToAllClassesEnabled;
580 bool myPlaybackWithoutRegionsEnabled;
584 RtiTime* myFederationTime;
585 double myRequestedTime;
586 double myInitialFedTime;
587 bool myRequestingTimeAdvance;
588 bool myRequestingNextEvent;
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;
601 DtString myDynamicNamePrefix;
603 DtLgrHlaConfigData myConfigData;
605 typedef std::map<DtString, DtDDMRegionSet> DtNameRegionMap;
610 DtNameRegionMap myGlobalRegions;
613 DtNameRegionMap myObjectRegions;
616 DtNameRegionMap myInteractionRegions;
618 DtLgrFomWithRegions *myFomWithRegions;
621 const DtString& DtPlaybackRegionModeString(DtPlaybackRegionMode mode);
622 const DtString& DtSubscribeRegionModeString(DtSubscribeRegionMode mode);