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-2025 MAK Technologies, Inc
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 bool isConnectionOk() const;
104 
106  virtual void setSubscriptionListToAll();
107 
109  virtual void setObjectSubscriptionList(const std::vector<DtString>& objectClasses);
110 
112  virtual void setInteractionSubscriptionList(const std::vector<DtString>& interactionClasses);
113 
115  virtual void setSubscriptionList(const DtSubscriptionListFile& list);
116 
118  virtual const DtSubscriptionListFile& subscriptionList() const;
119 
121  virtual std::vector<DtString> objectSubscriptionList() const;
122 
124  virtual std::vector<DtString> interactionSubscriptionList() const;
125 
127  virtual void subscribeToData();
128 
130  virtual void unsubscribeToData();
131 
133  virtual void addTrafficAnalyzerFilter(DtHlaTAFilter* taFilter);
134 
136  virtual void removeTrafficAnalyzerFilter(DtHlaTAFilter* taFilter);
137 
140  virtual bool evaluateTrafficAnalyzerFilters(
141  const DtStateRepository& stateRep, const DtHlaObject& obj);
142 
145  virtual bool evaluateTrafficAnalyzerFilters(const DtInteraction& interaction);
146 
148  virtual const DtLgrSimInput* input() const;
150  virtual DtLgrSimInput* input();
152 
154  virtual const DtLgrSimOutput* output() const;
156  virtual DtLgrSimOutput* output();
158 
160  virtual const DtMessageState* state() const;
162  virtual DtMessageState* state();
164 
168  virtual DtLgrFileInput* openFileForInput(const DtString& filename) const;
169 
170 
174  virtual DtLgrFileOutput* openFileForCopying(const DtString& filename,
175  const DtLgrFileInput* input) const;
176 
181  virtual DtLgrFileOutput* openFileForOutput(const DtString& filename,
182  const DtString& description) const;
183 
189  virtual DtLgrFileInput* openPartialFileForCopying(
190  const DtLgrFileOutput* output, DtFilePosition firstPacket,
191  DtFilePosition lastPacket) const;
192 
194  virtual void initPlayback(DtLgrFileInput& input);
195 
196 
198  virtual DtMessageState* createState() const;
199 
202  virtual bool connect(DtExerciseConnInitializer& initializer, DtString& failureReason);
203 
205  virtual void connectShared(DtExerciseConn* exConn);
206 
208  virtual void disconnect();
209 
211 
213  virtual bool ignoreAdvisories() const;
214 
216  virtual void setDrainInputMaxTime(double maxTime);
217 
219  virtual void setDrainInputMinTime(double minTime);
220 
222  virtual double drainInputMaxTime() const;
223 
225  virtual double drainInputMinTime() const;
226 
228  virtual void setPassiveSubscription(bool ignore);
229 
231  virtual bool passiveSubscription() const;
232 
234  virtual void setDdmEnabled( bool enableDdm );
235 
237  virtual bool ddmEnabled() const;
238 
240  virtual void setTrafficAnalyzerEnabled( bool enableTrafficAnalyzer );
241 
243  virtual bool trafficAnalyzerEnabled() const;
244 
246  virtual void setSendOnlyUpdatedValues(bool updatesOnly);
248  virtual bool sendOnlyUpdatedValues() const;
250 
253  virtual const DtLgrOnlineFomDesc* fomDescription() const;
254 
256  virtual DtHlaObjectFactory* defaultObjectFactory();
257 
259  virtual void setTimeManagementSettings(bool constrainOnRecord,
260  bool constrainOnPlayback,bool regulateOnRecord,bool regulateOnPlayback,
261  double lookAheadTime);
262 
264  virtual bool isTimeManagementEnabled() const;
265 
269  virtual bool enableTimeConstrained();
270 
272  virtual bool testTimeManagement();
273 
277  virtual bool disableTimeConstrained();
278 
280  virtual bool isTimeConstrained() const;
281 
285  virtual bool enableTimeRegulating(double lookAheadInterval);
286 
290  virtual bool disableTimeRegulating();
291 
293  virtual bool isTimeRegulating() const;
294 
296  virtual void registerTimeAdvanceGrant();
297 
299  virtual void unregisterTimeAdvanceGrant();
300 
303  virtual double requestTimeAdvance();
304 
306  virtual double requestAdvanceToNextEvent();
307 
309  virtual bool isTimeAdvanceGrantRegistered() const;
310 
312  virtual double lookAheadTime() const;
313 
317  virtual double workingLookAheadTime() const;
318 
320  virtual bool constrainOnRecord() const;
321 
323  virtual bool constrainOnPlayback() const;
324 
326  virtual bool regulateOnRecord() const;
327 
329  virtual bool regulateOnPlayback() const;
330 
332  virtual void setInitialTime(DtAbsoluteTime initialTime);
333 
335  virtual double fedTime() const;
336 
338  virtual double requestedTime() const;
339 
341  virtual double initialFedTime() const;
342 
344  virtual double timeAdvanced() const;
345 
347  virtual bool isTimeAdvancing() const;
348 
350  virtual bool isRequestingNextEvent() const;
351 
353  virtual bool isRequestingTimeAdvance() const;
354 
356  virtual void setDisableTimeManagementTest(bool disableTest);
357 
360  virtual bool isValidTime(const DtAbsoluteTime& packetTime) const;
361 
363  virtual void setAllowUnsubscribes(bool allowUnsubscribe);
364 
366  virtual bool allowUnsubscribes() const;
367 
368  //virtual bool subscribeInteractionWithRegion(
369 
371  virtual const DtString& dynamicNamePrefix() const;
372 
374  virtual void setDynamicNamePrefix(const DtString& dynamicNamePrefix);
375 
377  virtual DtLgrHlaSimDriver* simDriver();
378 
380  virtual const DtLgrHlaSimDriver* simDriver() const;
381 
382 
384  virtual bool testDdm() const;
385 
389  virtual bool addPlaybackRegionSetForObjectName(const DtString& objectName, const DtString& regionSetName);
390 
392  virtual void removePlaybackRegionSetForObjectName(const DtString& objectName);
393 
398  virtual unsigned int getPlaybackRegionSetForObjectName(DtString objectName,
399  DtDDMRegionSet& regionSet, bool cacheRegions=true);
400 
404  virtual bool addPlaybackRegionSetForInteractionClass(const DtString& className, const DtString& regionSetName);
405 
407  virtual void removePlaybackRegionSetForInteractionClass(const DtString& className);
408 
412  virtual unsigned int getPlaybackRegionSetForInteractionClass(DtString className,
413  DtDDMRegionSet& regionSet, bool cacheRegions=true);
414 
416  virtual void subscribeToList(const DtSubscriptionListFile& sublist);
417 
419  virtual void setPublicationList(const DtSubscriptionListFile& publist);
420 
422  virtual const DtSubscriptionListFile& publicationList() const;
423 
425  virtual void setConfigurationFileName(const DtString& filename);
426 
428  virtual DtLgrFomWithRegions *fomWithRegions();
429 
431  virtual MAKLogger::DtPlaybackRegionMode playbackRegionMode() const;
432 
434  virtual void setPlaybackRegionMode(MAKLogger::DtPlaybackRegionMode val);
435 
437  virtual MAKLogger::DtSubscribeRegionMode subscribeRegionMode() const;
438 
440  virtual void setSubscribeRegionMode(MAKLogger::DtSubscribeRegionMode val);
441 
443  virtual bool playbackRegionDynamicAssociationEnabled() const;
444 
446  virtual void setPlaybackRegionDynamicAssociationEnabled(bool val);
447 
449  virtual bool playbackRegionDynamicExtentsEnabled() const;
450 
452  virtual void setPlaybackRegionDynamicExtentsEnabled(bool val);
453 
455  virtual bool recordConveyedRegionsEnabled() const;
456 
458  virtual void setRecordConveyedRegionsEnabled(bool val);
459 
461  virtual bool requestUpdatesEnabled() const;
462 
464  virtual void setRequestUpdatesEnabled(bool val);
465 
467  virtual bool subscribeUnspecifiedAttributesEnabled() const;
468 
470  virtual void setSubscribeUnspecifiedAttributesEnabled(bool val);
471 
473  virtual bool playbackWithoutRegionsEnabled() const;
474 
476  virtual void setPlaybackWithoutRegionsEnabled(bool val);
477 
479  virtual bool subscribeToAllClassesEnabled() const;
480 
482  virtual void setSubscribeToAllClassesEnabled(bool val);
483 
484 
485  protected:
486 
487  virtual const DtLgrHlaConfigData& configData() const;
488 
492  virtual bool getSubscribeRegionSetForObjectClass(const DtString& classname, DtDDMRegionSet& regionSet) const;
493 
497  virtual bool getSubscribeRegionSetForInteractionClass(const DtString& classname, DtDDMRegionSet& regionSet) const;
498 
504  virtual bool getGlobalObjectRegionSet(const DtString& className, DtDDMRegionSet& regionSet);
505 
509  virtual bool getGlobalInteractionRegionSet(const DtString& className, DtDDMRegionSet& regionSet);
510 
513 
514  virtual int drainInput();
515  virtual int drainInput(DtTime maxTime, DtTime minTime);
517 
518 #if DtHLA_1516_EVOLVED
519  typedef RTI::LogicalTime RtiTime;
520  typedef RTI::LogicalTimeInterval RtiTimeInterval;
521  typedef HLAfloat64Time RtiTimeImpl;
522  typedef HLAfloat64Interval RtiTimeIntervalImpl;
523 #elif DtHLA_1516
524  typedef RTI::LogicalTime RtiTime;
525  typedef RTI::LogicalTimeInterval RtiTimeInterval;
526  typedef LogicalTimeImpl RtiTimeImpl;
527  typedef LogicalTimeIntervalImpl RtiTimeIntervalImpl;
528 #else
529  typedef RTI::FedTime RtiTime;
530  typedef RTI::FedTime RtiTimeInterval;
531  typedef RTIfedTime RtiTimeImpl;
532  typedef RTIfedTime RtiTimeIntervalImpl;
533 #endif
534 
536  virtual void timeAdvanceGrant( const RtiTime&);
537  virtual void timeConstrainedEnable( const RtiTime&);
538  virtual void timeRegulationEnable( const RtiTime&);
540  virtual bool invokeEnableTimeConstrained(bool checkLongOperation, bool postWarnings);
541  virtual bool invokeFlushQueue(RtiTimeImpl& newTime);
542  virtual bool invokeQueryMinNextEventTime(RtiTimeImpl& nextTime);
543  virtual bool invokeNextMessageRequest(RtiTimeImpl& nextTime, bool available);
544  virtual bool invokeTimeAdvanceRequest(RtiTimeImpl& nextTime, bool available);
545  virtual void initializeFederationTime();
546  virtual bool invokeChangeLookAheadTime(double time);
547  virtual bool invokeQueryLogicalTime(RtiTimeImpl&);
548 
550 
552  virtual void setObjectClassSubscriptionState(const DtString& name, const DtDDMRegionSet& regionset, bool subscribeToClass);
553 
555  virtual void setInteractionClassSubscriptionState(const DtString& name, const DtDDMRegionSet& regionset, bool subscribeToClass);
556 
559  virtual void subscribeObjectClasses(const std::set<DtString>& objectClasses,
560  const DtSubscriptionListFile& sublist);
561 
564  virtual void subscribeInteractionClasses(const std::set<DtString>& interactionClasses, const DtSubscriptionListFile& sublist);
565 
566  virtual void rtiErrorCb(const char* label);
567 
568  protected:
569 
570  static void timeAdvanceGrantCb( const RtiTime&, void* simMan);
571  static void timeConstrainedEnableCb( const RtiTime&, void* simMan);
572  static void timeRegulationEnableCb( const RtiTime&, void* simMan);
573  static void rtiErrorCb(const char* label, void* simMan);
574 
575  protected:
576 
581 
583  DtHlaObjectFactory* myDefaultObjectFactory;
584 
595 
597  std::set<DtHlaTAFilter*> myTrafficAnalyzerFilters;
598 
601 
604 
607 
610 
614 
617 
620 
623 
627 
630 
633 
636 
638 
639  MAKTrafficClientServerExConn::DtServerExerciseConnection* myServerExerciseConnForResign;
644 
647 
651 
654  double myEpsilon;
659 
671 
673 
675 
676  typedef std::map<DtString, DtDDMRegionSet> DtNameRegionMap;
677 
678  // Map name to global region.
679  // For 1.3, the name is the routing space.
680  // For 1516, the name is the concatenation of the dimension names used for the region.
682 
683  // Map the object region name to the region instance
685 
686  // Map the interaction region name to the region instance
688 
690  };
691 
694 
695 }
696 
697 #endif
698 #endif
DtNameRegionMap myObjectRegions
Definition: lgrHlaSimManager.h:684
DtString myRtiErrorMessage
Warning label that come with the error.
Definition: lgrHlaSimManager.h:646
Defines IMPORT/EXPORT macros for lgrSim library.
#define DT_DLL_LGRSIM
Definition: lgrSim.h:21
LogicalTimeImpl RtiTimeImpl
Definition: lgrHlaSimManager.h:526
A Time provider that supports Wall clock time and time management.
Definition: lgrHlaTimeProvider.h:24
Contains MAKLogger::DtLgrBaseSimManager class.
double myWorkingLookAhead
Definition: lgrHlaSimManager.h:666
bool myRtiError
True when there has been a RTI connection error.
Definition: lgrHlaSimManager.h:643
bool myPlaybackRegionDynamicAssociationEnabled
Control whether an object&#39;s playback region associations can change (versus fixed at time publisher i...
Definition: lgrHlaSimManager.h:613
bool mySendOnlyUpdatedValues
Control whether to send only updated values.
Definition: lgrHlaSimManager.h:635
Definition: serverExerciseConnection.h:34
bool myIsDDMEnabled
Control whether DDM is used for record or playback.
Definition: lgrHlaSimManager.h:600
bool myConstrainOnRecord
Definition: lgrHlaSimManager.h:660
DtInt64 DtFilePosition
The position in a file, stored as a 64bit unsigned integer.
Definition: filePosition.h:18
Definition: lgrHlaSimManager.h:70
Definition: lgrHlaSimManager.h:78
DtPlaybackRegionMode
The modes for playback using regions.
Definition: lgrHlaSimManager.h:67
#define DT_VIRTUAL_CTR(CLASS_NAME, ARG_TYPES_LIST)
Declare a Virtual Constructor Create using DT_VIRTUAL_CTR(CLASS_NAME,ARG_TYPES_LIST) Where CLASS_NAME...
Definition: virtualConstructor.h:34
DtHlaObjectFactory * myDefaultObjectFactory
Default object factory.
Definition: lgrHlaSimManager.h:583
bool myRequestingNextEvent
Definition: lgrHlaSimManager.h:658
bool mySubscribeToAllClassesEnabled
Control whether subscribe to all classes by default.
Definition: lgrHlaSimManager.h:629
HLA specific driver for controlling the simulation.
Definition: lgrHlaSimDriver.h:36
Hla specific simulation output responsible for sending messages converted from packets.
Definition: hlaSimOutput.h:43
Contains MAKLogger::DtSubscriptionListFile class.
An online fom description that has access to the RTI Ambassidor.
Definition: onlineFomDesc.h:34
DtObjectPublisher *( DtPublisherCreator)()
Definition: lgrHlaSimManager.h:210
double myRequestedTime
Definition: lgrHlaSimManager.h:655
Definition: lgrHlaSimManager.h:69
Contains DT_VIRTUAL_CTR DT_VIRTUAL_CTR_DEFAULTS DT_VIRTUAL_COPY_ASSIGN DT_VIRTUAL_BASE_CTR DT_PURE_VI...
DtLgrHlaSimInput * myInput
Definition: lgrHlaSimManager.h:579
Definition: hlaTAFilter.h:15
bool myIgnoreAdvisories
Definition: lgrHlaSimManager.h:586
RTI::LogicalTime RtiTime
Definition: lgrHlaSimManager.h:524
An abstract interface for message input from a file.
Definition: lgrFileInput.h:26
bool myPreviousRtiError
State of error on previous tick (determines if another tick is needed before disconnect) ...
Definition: lgrHlaSimManager.h:649
const DtString & DtPlaybackRegionModeString(DtPlaybackRegionMode mode)
bool myPassiveSubscription
Definition: lgrHlaSimManager.h:587
double myDrainInputMaxTime
Definition: lgrHlaSimManager.h:669
std::set< DtHlaTAFilter * > myTrafficAnalyzerFilters
Traffic analyzer filters.
Definition: lgrHlaSimManager.h:597
bool myRecordConveyedRegionsEnabled
Control whether conveyed regions are recorded.
Definition: lgrHlaSimManager.h:619
bool myIsTimeConstrainedFlag
Definition: lgrHlaSimManager.h:589
The HLA simulation manager.
Definition: lgrHlaSimManager.h:84
LogicalTimeIntervalImpl RtiTimeIntervalImpl
Definition: lgrHlaSimManager.h:527
bool myRequestingTimeAdvance
Definition: lgrHlaSimManager.h:657
double myDrainInputMinTime
Definition: lgrHlaSimManager.h:670
bool myRequestUpdatesEnabled
Control whether request updates are used.
Definition: lgrHlaSimManager.h:622
bool myPlaybackWithoutRegionsEnabled
Control if updates and interactions are sent if region not available.
Definition: lgrHlaSimManager.h:632
Definition: lgrHlaSimManager.h:71
DtNameRegionMap myInteractionRegions
Definition: lgrHlaSimManager.h:687
Definition: lgrHlaSimManager.h:77
DtSubscriptionListFile * mySubscriptionList
Definition: lgrHlaSimManager.h:591
double myInitialFedTime
Definition: lgrHlaSimManager.h:656
bool myConstrainOnPlayback
Definition: lgrHlaSimManager.h:661
bool mySubscribedFlag
Definition: lgrHlaSimManager.h:593
DtSubscribeRegionMode mySubscribeRegionMode
Control how subscribe regions are created (using config file, global, ...)
Definition: lgrHlaSimManager.h:609
DtLgrHlaMessageState * myMessageState
Definition: lgrHlaSimManager.h:578
Stores information about HLA logger configuration.
Definition: lgrHlaConfigData.h:20
bool myAllowUnsubscribe
Definition: lgrHlaSimManager.h:668
DtLgrHlaConfigData myConfigData
Definition: lgrHlaSimManager.h:674
bool myIsTimeRegulatingFlag
Definition: lgrHlaSimManager.h:590
double myLookAheadTime
Definition: lgrHlaSimManager.h:665
DtLgrHlaSimOutput * myOutput
Definition: lgrHlaSimManager.h:580
HLA Specific State.
Definition: hlaMessageState.h:34
bool myRegulateOnRecord
Definition: lgrHlaSimManager.h:662
class DT_DLL_MATREX_TSPI_FOM_MAP DtInteraction
Definition: matrexTspiTagModifier.h:20
bool myTimeAdvanceGrantRegisterFlag
Definition: lgrHlaSimManager.h:588
std::map< DtString, DtDDMRegionSet > DtNameRegionMap
Definition: lgrHlaSimManager.h:676
Shared implementation of the Sim Manager.
Definition: lgrBaseSimManager.h:29
double myEpsilon
Definition: lgrHlaSimManager.h:654
The base class to help simulation input.
Definition: lgrSimInput.h:24
The abstract interface which defines the output to a simulation.
Definition: lgrSimOutput.h:26
RtiTimeIntervalImpl * myTimeAdvanced
Definition: lgrHlaSimManager.h:653
bool myPlaybackRegionDynamicExtentsEnabled
Control whether playback region extents can change after the region is first created.
Definition: lgrHlaSimManager.h:616
DtLgrFomWithRegions * myFomWithRegions
Definition: lgrHlaSimManager.h:689
DtSubscriptionListFile * myPublicationList
Definition: lgrHlaSimManager.h:592
DtLgrOnlineFomDesc * myFomDescription
Definition: lgrHlaSimManager.h:585
DtPlaybackRegionMode myPlaybackRegionMode
Control how playback regions are created (using recorded data, conveyed regions, ...)
Definition: lgrHlaSimManager.h:606
DtLgrHlaSimDriver * mySimDriver
Definition: lgrHlaSimManager.h:577
The Abstract message state maintained by the logger.
Definition: messageState.h:33
DtLogger provides the core system structure and controls the execution model for the underlying objec...
Definition: logger.h:35
DtNameRegionMap myGlobalRegions
Definition: lgrHlaSimManager.h:681
const DtString & DtSubscribeRegionModeString(DtSubscribeRegionMode mode)
bool myTimeManagementEnabledFlag
Definition: lgrHlaSimManager.h:664
DtLgrHlaTimeProvider * myHlaTimeProvider
Definition: lgrHlaSimManager.h:594
Contains MAKLogger::DtLgrHlaConfigData class.
The subscription list file allow reading and writing of subscription list data to and from a file...
Definition: subscriptionListFile.h:26
bool mySubscribeUnspecifiedAttributesEnabled
Control whether unspecified attributes are subscribed using DM when subscription is performed using D...
Definition: lgrHlaSimManager.h:626
bool myTrafficAnalyzerEnabled
Control whether the traffic analyzer is enabled.
Definition: lgrHlaSimManager.h:603
RTI::LogicalTimeInterval RtiTimeInterval
Definition: lgrHlaSimManager.h:525
This class extends DtFom to include support for receiving and reporting information about classes...
Definition: lgrFomWithRegions.h:24
Class responsible for message Output to a file.
Definition: lgrFileOutput.h:25
DtString myDynamicNamePrefix
Definition: lgrHlaSimManager.h:672
bool myRegulateOnPlayback
Definition: lgrHlaSimManager.h:663
RtiTimeImpl * myFederationTime
Definition: lgrHlaSimManager.h:652
bool myDisableTimeManagementTesting
Definition: lgrHlaSimManager.h:667
HLA specific simulation input.
Definition: hlaSimInput.h:42
Absolute Time, a particular measured instance in time, could be thought of as a set of relative times...
Definition: absoluteTime.h:82
DtSubscribeRegionMode
The modes for subscribing using regions.
Definition: lgrHlaSimManager.h:75
Definition: lgrHlaSimManager.h:79

Document ID: Generated on Thu Dec 18 15:35:09 EST 2025 from SVN revision 282494
Copyright © 2024 MAK Technologies. All Rights Reserved (www.mak.com)