MAK Data Logger API Documentation for HLA
 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 
68  {
72  };
73 
76  {
80  };
81 
85  {
86  public:
87 
88 
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 
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 
578 
580  DtHlaObjectFactory* myDefaultObjectFactory;
581 
592 
594  std::set<DtHlaTAFilter*> myTrafficAnalyzerFilters;
595 
598 
601 
604 
607 
611 
614 
617 
620 
624 
627 
630 
633 
636 
639  double myEpsilon;
644 
656 
658 
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.
667 
668  // Map the object region name to the region instance
670 
671  // Map the interaction region name to the region instance
673 
675  };
676 
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)