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)
const;
173 virtual DtLgrFileInput* openPartialFileForCopying(
178 virtual void initPlayback(DtLgrFileInput& input);
182 virtual DtMessageState* createState()
const;
185 virtual bool connect(DtExerciseConnInitializer& initializer);
191 virtual void disconnect();
193 typedef DtObjectPublisher* (DtPublisherCreator)();
196 virtual bool ignoreAdvisories()
const;
199 virtual void setDrainInputMaxTime(
double maxTime);
202 virtual void setDrainInputMinTime(
double minTime);
205 virtual double drainInputMaxTime()
const;
208 virtual double drainInputMinTime()
const;
211 virtual void setPassiveSubscription(
bool ignore);
214 virtual bool passiveSubscription()
const;
217 virtual void setDdmEnabled(
bool enableDdm );
220 virtual bool ddmEnabled()
const;
223 virtual void setTrafficAnalyzerEnabled(
bool enableTrafficAnalyzer );
226 virtual bool trafficAnalyzerEnabled()
const;
230 virtual const DtLgrOnlineFomDesc* fomDescription()
const;
233 virtual DtHlaObjectFactory* defaultObjectFactory();
236 virtual void setTimeManagementSettings(
bool constrainOnRecord,
237 bool constrainOnPlayback,
bool regulateOnRecord,
bool regulateOnPlayback,
238 double lookAheadTime);
241 virtual bool isTimeManagementEnabled()
const;
246 virtual bool enableTimeConstrained();
249 virtual bool testTimeManagement();
254 virtual bool disableTimeConstrained();
257 virtual bool isTimeConstrained()
const;
262 virtual bool enableTimeRegulating(
double lookAheadInterval);
267 virtual bool disableTimeRegulating();
270 virtual bool isTimeRegulating()
const;
273 virtual void registerTimeAdvanceGrant();
276 virtual void unregisterTimeAdvanceGrant();
280 virtual double requestTimeAdvance();
283 virtual double requestAdvanceToNextEvent();
287 virtual bool changeLookAheadTime(
double time) ;
290 virtual bool isTimeAdvanceGrantRegistered()
const;
295 virtual bool nextMessageRequest(
bool available=
false);
298 virtual double lookAheadTime()
const;
301 virtual bool constrainOnRecord()
const;
304 virtual bool constrainOnPlayback()
const;
307 virtual bool regulateOnRecord()
const;
310 virtual bool regulateOnPlayback()
const;
313 virtual double fedTime()
const;
316 virtual double requestedTime()
const;
319 virtual double initialFedTime()
const;
322 virtual bool isTimeAdvancing()
const;
325 virtual bool isRequestingNextEvent()
const;
328 virtual bool isRequestingTimeAdvance()
const;
331 virtual void setDisableTimeManagementTest(
bool disableTest);
334 virtual void setAllowUnsubscribes(
bool allowUnsubscribe);
337 virtual bool allowUnsubscribes()
const;
342 virtual const DtString& dynamicNamePrefix()
const;
345 virtual void setDynamicNamePrefix(
const DtString& dynamicNamePrefix);
348 virtual DtLgrHlaSimDriver* simDriver();
351 virtual const DtLgrHlaSimDriver* simDriver()
const;
355 virtual bool testDdm()
const;
360 virtual bool addPlaybackRegionSetForObjectName(
const DtString& objectName,
const DtString& regionSetName);
363 virtual void removePlaybackRegionSetForObjectName(
const DtString& objectName);
369 virtual unsigned int getPlaybackRegionSetForObjectName(DtString objectName,
370 DtDDMRegionSet& regionSet,
bool cacheRegions=
true);
375 virtual bool addPlaybackRegionSetForInteractionClass(
const DtString& className,
const DtString& regionSetName);
378 virtual void removePlaybackRegionSetForInteractionClass(
const DtString& className);
383 virtual unsigned int getPlaybackRegionSetForInteractionClass(DtString className,
384 DtDDMRegionSet& regionSet,
bool cacheRegions=
true);
387 virtual void subscribeToList(
const DtSubscriptionListFile& sublist);
390 virtual void setPublicationList(
const DtSubscriptionListFile& publist);
393 virtual const DtSubscriptionListFile& publicationList()
const;
396 virtual void setConfigurationFileName(
const DtString& filename);
399 virtual DtLgrFomWithRegions *fomWithRegions();
402 virtual MAKLogger::DtPlaybackRegionMode playbackRegionMode()
const;
405 virtual void setPlaybackRegionMode(MAKLogger::DtPlaybackRegionMode val);
408 virtual MAKLogger::DtSubscribeRegionMode subscribeRegionMode()
const;
411 virtual void setSubscribeRegionMode(MAKLogger::DtSubscribeRegionMode val);
414 virtual bool playbackRegionDynamicAssociationEnabled()
const;
417 virtual void setPlaybackRegionDynamicAssociationEnabled(
bool val);
420 virtual bool playbackRegionDynamicExtentsEnabled()
const;
423 virtual void setPlaybackRegionDynamicExtentsEnabled(
bool val);
426 virtual bool recordConveyedRegionsEnabled()
const;
429 virtual void setRecordConveyedRegionsEnabled(
bool val);
432 virtual bool requestUpdatesEnabled()
const;
435 virtual void setRequestUpdatesEnabled(
bool val);
438 virtual bool subscribeUnspecifiedAttributesEnabled()
const;
441 virtual void setSubscribeUnspecifiedAttributesEnabled(
bool val);
444 virtual bool playbackWithoutRegionsEnabled()
const;
447 virtual void setPlaybackWithoutRegionsEnabled(
bool val);
450 virtual bool subscribeToAllClassesEnabled()
const;
453 virtual void setSubscribeToAllClassesEnabled(
bool val);
458 virtual const DtLgrHlaConfigData& configData()
const;
463 virtual bool getSubscribeRegionSetForObjectClass(
const DtString& classname, DtDDMRegionSet& regionSet)
const;
468 virtual bool getSubscribeRegionSetForInteractionClass(
const DtString& classname, DtDDMRegionSet& regionSet)
const;
475 virtual bool getGlobalObjectRegionSet(
const DtString& className, DtDDMRegionSet& regionSet);
480 virtual bool getGlobalInteractionRegionSet(
const DtString& className, DtDDMRegionSet& regionSet);
484 virtual int drainInput(DtTime maxTime = -1, DtTime minTime = 0.0);
487 typedef RTI::LogicalTime RtiTime;
488 typedef RTI::LogicalTimeInterval RtiTimeInterval;
490 typedef RTI::FedTime RtiTime;
491 typedef RTI::FedTime RtiTimeInterval;
495 virtual void timeAdvanceGrant(
const RtiTime&);
496 virtual void timeConstrainedEnable(
const RtiTime&);
497 virtual void timeRegulationEnable(
const RtiTime&);
499 virtual void initializeFederationTime();
503 virtual void setObjectClassSubscriptionState(
const DtString& name,
const DtDDMRegionSet& regionset,
bool subscribeToClass);
506 virtual void setInteractionClassSubscriptionState(
const DtString& name,
const DtDDMRegionSet& regionset,
bool subscribeToClass);
510 virtual void subscribeObjectClasses(
const std::set<DtString>& objectClasses,
511 const DtSubscriptionListFile& sublist);
515 virtual void subscribeInteractionClasses(
const std::set<DtString>& interactionClasses,
const DtSubscriptionListFile& sublist);
519 static void timeAdvanceGrantCb(
const RtiTime&,
void* simMan);
520 static void timeConstrainedEnableCb(
const RtiTime&,
void* simMan);
521 static void timeRegulationEnableCb(
const RtiTime&,
void* simMan);
525 DtLgrHlaSimDriver* mySimDriver;
526 DtLgrHlaMessageState* myMessageState;
527 DtLgrHlaSimInput* myInput;
528 DtLgrHlaSimOutput* myOutput;
531 DtHlaObjectFactory* myDefaultObjectFactory;
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;
544 std::set<DtHlaTAFilter*> myTrafficAnalyzerFilters;
550 bool myTrafficAnalyzerEnabled;
553 DtPlaybackRegionMode myPlaybackRegionMode;
556 DtSubscribeRegionMode mySubscribeRegionMode;
560 bool myPlaybackRegionDynamicAssociationEnabled;
563 bool myPlaybackRegionDynamicExtentsEnabled;
566 bool myRecordConveyedRegionsEnabled;
569 bool myRequestUpdatesEnabled;
573 bool mySubscribeUnspecifiedAttributesEnabled;
576 bool mySubscribeToAllClassesEnabled;
579 bool myPlaybackWithoutRegionsEnabled;
583 RtiTime* myFederationTime;
584 double myRequestedTime;
585 double myInitialFedTime;
586 bool myRequestingTimeAdvance;
587 bool myRequestingNextEvent;
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;
600 DtString myDynamicNamePrefix;
602 DtLgrHlaConfigData myConfigData;
604 typedef std::map<DtString, DtDDMRegionSet> DtNameRegionMap;
609 DtNameRegionMap myGlobalRegions;
612 DtNameRegionMap myObjectRegions;
615 DtNameRegionMap myInteractionRegions;
617 DtLgrFomWithRegions *myFomWithRegions;
620 const DtString& DtPlaybackRegionModeString(DtPlaybackRegionMode mode);
621 const DtString& DtSubscribeRegionModeString(DtSubscribeRegionMode mode);