MAK Data Logger API Documentation for DIS
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
lgrDisSimManager.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 lgrDisSimManager_H_
11 #define lgrDisSimManager_H_
12 
13 #if DtDIS
14 
15 #include <lgrSim/lgrSim.h>
18 #include <lgrUtil/absoluteTime.h>
19 #include <lgrCore/lgrConfigData.h>
20 
21 #include <vl/pduCallbackManager.h>
22 #include <map>
23 #include <set>
24 
25 class DtPdu;
26 class DtExerciseConn;
27 class DtExerciseConnInitializer;
28 class DtObjectPublisher;
29 enum DtPduKind;
30 
31 namespace MAKLogger
32 {
33 
34  class DtDisDescriptor;
35  class DtLgrPublisherInterface;
36  class DtLgrDisMessageState;
37  class DtLgrDisSimInput;
38  class DtLgrDisSimOutput;
39  class DtLgrFileOutput;
40  class DtLgrDisEntityTypeManager;
41  class DtLgrDisSimDriver;
42 
46  {
47  public:
48 
50  typedef DtLgrPublisherInterface* (*LgrPublisherCreator)\
51  (DtLgrDisSimulationManager&,const DtPdu& pdu);
52 
53  public:
54 
56 
57  virtual ~DtLgrDisSimulationManager();
58 
60  virtual void tick();
61 
63  virtual bool isConnected() const;
64 
66  virtual bool isConnectionOk() const;
67 
70  virtual bool connect(DtExerciseConnInitializer& initializer, DtString& failureReason);
71 
73  virtual void disconnect();
74 
76  virtual DtLgrDisSimDriver& simDriver();
77 
79  virtual const DtLgrDisSimDriver& simDriver() const;
80 
82  virtual const DtLgrSimInput* input() const;
83  virtual DtLgrSimInput* input();
84 
86  virtual const DtLgrSimOutput* output() const;
87  virtual DtLgrSimOutput* output();
88 
90  virtual const DtMessageState* state() const;
91  virtual DtMessageState* state();
92 
94  virtual DtMessageState* createState() const;
95 
97  virtual DtLgrFileInput* openFileForInput(const DtString& filename) const;
98 
100  virtual DtLgrFileOutput* openFileForCopying(const DtString& filename,
101  const DtLgrFileInput* input) const;
102 
104  virtual DtLgrFileOutput* openFileForOutput(const DtString& filename,
105  const DtString& description) const;
106 
108  virtual DtLgrFileInput* openPartialFileForCopying(
109  const DtLgrFileOutput* output , DtFilePosition firstPacket,
110  DtFilePosition lastPacket) const;
111 
112  virtual void addReceivePduCallback(DtPduCallbackFcn receivePduCb,void* usr);
113  virtual void removeReceivePduCallback(DtPduCallbackFcn receivePduCb,void* usr);
114 
116  virtual void sendPdu(DtPdu& pdu);
117 
119  virtual void registerPublisher(DtPduKind,LgrPublisherCreator);
120 
122  virtual void removePublisherCreator(DtPduKind);
123 
125  virtual bool pduNeedsPublisher(DtPduKind pduKind) const;
126 
128  virtual DtLgrPublisherInterface* createPublisher(const DtPdu& pdu);
129 
131  virtual DtRelativeTime heartbeatRate() const;
132 
134  virtual void setHeartbeatRate(DtRelativeTime time);
135 
137  virtual DtRelativeTime timeoutRate() const;
138 
140  virtual void setTimeoutRate(DtRelativeTime time);
141 
143  virtual bool scaleArticulatedParts() const;
144 
146  static DtVector scaleVector(const DtVector& vec,double scaleValue);
147 
149  virtual void setDisDescription(DtDisDescriptor* desc);
150 
152  virtual void setDrainInputMaxTime(double maxTime);
153 
155  virtual double drainInputMaxTime() const;
156 
158  virtual void setNumPdusToReadPerTimeCheck(int number);
159 
161  virtual int numPdusToReadPerTimeCheck() const;
162 
164  virtual const DtDisDescriptor* disDescription() const;
165  virtual DtDisDescriptor* disDescription();
166 
168  virtual void setEntityTypeManager(DtLgrDisEntityTypeManager* mgr);
169 
171  virtual DtLgrDisEntityTypeManager* entityTypeManager();
172  virtual const DtLgrDisEntityTypeManager* entityTypeManager() const;
173 
174  virtual void setConfigurationFileName(const DtString& filename);
175 
176  protected:
177 
178  static DtLgrPublisherInterface* createEntityStatePublisher(
179  DtLgrDisSimulationManager&, const DtPdu& pdu);
180 
181  static DtLgrPublisherInterface* createDesignatorPublisher(
182  DtLgrDisSimulationManager&, const DtPdu& pdu);
183 
184  static DtLgrPublisherInterface* createAggregateStatePublisher(
185  DtLgrDisSimulationManager&,const DtPdu& pdu);
186 
187  static DtLgrPublisherInterface* createEnvironmentalProcessPublisher(
188  DtLgrDisSimulationManager&,const DtPdu& pdu);
189 
190  static DtLgrPublisherInterface* createTransmitterPublisher(
191  DtLgrDisSimulationManager&,const DtPdu& pdu);
192 
193  static DtLgrPublisherInterface* createReceiverPublisher(
194  DtLgrDisSimulationManager&,const DtPdu& pdu);
195 
196  static DtLgrPublisherInterface* createGriddedDataPublisher(
197  DtLgrDisSimulationManager&,const DtPdu& pdu);
198 
199  typedef std::map<DtPduKind,LgrPublisherCreator> DtPublisherFunctionMap;
200 
201  typedef std::set<DtPduKind> DtPduKindSet;
202 
212 
218 
220  };
221 
222 }
223 
224 #endif
225 #endif
DIS simulation output.
Definition: lgrDisSimOutput.h:37
double myDrainInputMaxTime
Definition: lgrDisSimManager.h:216
Defines IMPORT/EXPORT macros for lgrSim library.
#define DT_DLL_LGRSIM
Definition: lgrSim.h:21
DtRelativeTime myTimeoutRate
Definition: lgrDisSimManager.h:214
Contains MAKLogger::DtLgrBaseSimManager class.
Stores information about logger configuration and is primarily used to record what settings were used...
Definition: lgrConfigData.h:27
DtDisDescriptor * myDisDescriptor
Definition: lgrDisSimManager.h:209
DIS simulation driver controls connection to DIS simulation.
Definition: lgrDisSimDriver.h:43
DtLgrDisSimInput * myInput
Definition: lgrDisSimManager.h:207
DtInt64 DtFilePosition
The position in a file, stored as a 64bit unsigned integer.
Definition: filePosition.h:18
#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
The DIS Simulation manager manages the DIS simulation settings.
Definition: lgrDisSimManager.h:45
Managers known DIS entity types.
Definition: lgrDisEntityTypeManager.h:21
Relative Time, an elapsed duration of time, no implied measurement, could be seconds/cycles or ticks ...
Definition: absoluteTime.h:28
Contains DT_VIRTUAL_CTR DT_VIRTUAL_CTR_DEFAULTS DT_VIRTUAL_COPY_ASSIGN DT_VIRTUAL_BASE_CTR DT_PURE_VI...
std::set< DtPduKind > DtPduKindSet
Definition: lgrDisSimManager.h:201
An abstract interface for message input from a file.
Definition: lgrFileInput.h:26
std::map< DtPduKind, LgrPublisherCreator > DtPublisherFunctionMap
Definition: lgrDisSimManager.h:199
Responsible for maintaining a DIS simulation state.
Definition: lgrDisMessageState.h:32
DtLgrDisEntityTypeManager * myEntityTypeManager
Definition: lgrDisSimManager.h:210
DtLgrConfigData myConfigData
Definition: lgrDisSimManager.h:219
DIS Simulation input class.
Definition: lgrDisSimInput.h:34
DtPduKindSet myMessageStateKinds
Definition: lgrDisSimManager.h:204
DtLgrDisSimOutput * myOutput
Definition: lgrDisSimManager.h:208
DtLgrDisMessageState * myMessageState
Definition: lgrDisSimManager.h:206
Responsible for defining the interface that Object publishers must have.
Definition: lgrPublisherInterface.h:39
Contains MAKLogger::DtAbsoluteTime and MAKLogger::DtRelativeTime classes.
Contains MAKLogger::DtLgrConfigData class.
DtRelativeTime myHeartbeatRate
Definition: lgrDisSimManager.h:213
DtLgrDisSimDriver & mySimDriver
Definition: lgrDisSimManager.h:211
Instances of DtDisDescriptor provide mappings between Pdu descriptors and PduKind enumerators in DIS...
Definition: disDescriptor.h:55
Shared implementation of the Sim Manager.
Definition: lgrBaseSimManager.h:29
DtPublisherFunctionMap myPublisherMap
Definition: lgrDisSimManager.h:205
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
DtPduKindSet myPublishedKinds
Definition: lgrDisSimManager.h:203
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
Class responsible for message Output to a file.
Definition: lgrFileOutput.h:25
int myNumPdusToReadPerTimeCheck
Definition: lgrDisSimManager.h:217
bool myScaleArticulatedpartsFlag
Definition: lgrDisSimManager.h:215

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)