10 #ifndef lgrDisSimManager_H_
11 #define lgrDisSimManager_H_
21 #include <vl/pduCallbackManager.h>
27 class DtExerciseConnInitializer;
34 class DtDisDescriptor;
35 class DtLgrPublisherInterface;
36 class DtLgrDisMessageState;
37 class DtLgrDisSimInput;
38 class DtLgrDisSimOutput;
39 class DtLgrFileOutput;
40 class DtLgrDisEntityTypeManager;
41 class DtLgrDisSimDriver;
45 class DT_DLL_LGRSIM DtLgrDisSimulationManager :
public DtLgrBaseSimManager
50 typedef DtLgrPublisherInterface* (*LgrPublisherCreator)\
51 (DtLgrDisSimulationManager&,
const DtPdu& pdu);
55 DT_VIRTUAL_CTR(DtLgrDisSimulationManager,(DtLogger& logger, DtLgrDisSimDriver& simDriver))
57 virtual ~DtLgrDisSimulationManager();
63 virtual bool isConnected()
const;
66 virtual bool isConnectionOk()
const;
70 virtual bool connect(DtExerciseConnInitializer& initializer,
DtString& failureReason);
73 virtual void disconnect();
76 virtual DtLgrDisSimDriver& simDriver();
79 virtual const DtLgrDisSimDriver& simDriver()
const;
82 virtual const DtLgrSimInput* input()
const;
83 virtual DtLgrSimInput* input();
86 virtual const DtLgrSimOutput* output()
const;
87 virtual DtLgrSimOutput* output();
90 virtual const DtMessageState* state()
const;
91 virtual DtMessageState* state();
94 virtual DtMessageState* createState()
const;
97 virtual DtLgrFileInput* openFileForInput(
const DtString& filename)
const;
100 virtual DtLgrFileOutput* openFileForCopying(
const DtString& filename,
101 const DtLgrFileInput* input)
const;
104 virtual DtLgrFileOutput* openFileForOutput(
const DtString& filename,
108 virtual DtLgrFileInput* openPartialFileForCopying(
112 virtual void addReceivePduCallback(DtPduCallbackFcn receivePduCb,
void* usr);
113 virtual void removeReceivePduCallback(DtPduCallbackFcn receivePduCb,
void* usr);
116 virtual void sendPdu(
DtPdu& pdu);
119 virtual void registerPublisher(DtPduKind,LgrPublisherCreator);
122 virtual void removePublisherCreator(DtPduKind);
125 virtual bool pduNeedsPublisher(DtPduKind pduKind)
const;
128 virtual DtLgrPublisherInterface* createPublisher(
const DtPdu& pdu);
131 virtual DtRelativeTime heartbeatRate()
const;
134 virtual void setHeartbeatRate(DtRelativeTime time);
137 virtual DtRelativeTime timeoutRate()
const;
140 virtual void setTimeoutRate(DtRelativeTime time);
143 virtual bool scaleArticulatedParts()
const;
146 static DtVector scaleVector(
const DtVector& vec,
double scaleValue);
149 virtual void setDisDescription(DtDisDescriptor* desc);
152 virtual void setDrainInputMaxTime(
double maxTime);
155 virtual double drainInputMaxTime()
const;
158 virtual void setNumPdusToReadPerTimeCheck(
int number);
161 virtual int numPdusToReadPerTimeCheck()
const;
164 virtual const DtDisDescriptor* disDescription()
const;
165 virtual DtDisDescriptor* disDescription();
168 virtual void setEntityTypeManager(DtLgrDisEntityTypeManager* mgr);
171 virtual DtLgrDisEntityTypeManager* entityTypeManager();
172 virtual const DtLgrDisEntityTypeManager* entityTypeManager()
const;
174 virtual void setConfigurationFileName(
const DtString& filename);
178 static DtLgrPublisherInterface* createEntityStatePublisher(
179 DtLgrDisSimulationManager&,
const DtPdu& pdu);
181 static DtLgrPublisherInterface* createDesignatorPublisher(
182 DtLgrDisSimulationManager&,
const DtPdu& pdu);
184 static DtLgrPublisherInterface* createAggregateStatePublisher(
185 DtLgrDisSimulationManager&,
const DtPdu& pdu);
187 static DtLgrPublisherInterface* createEnvironmentalProcessPublisher(
188 DtLgrDisSimulationManager&,
const DtPdu& pdu);
190 static DtLgrPublisherInterface* createTransmitterPublisher(
191 DtLgrDisSimulationManager&,
const DtPdu& pdu);
193 static DtLgrPublisherInterface* createReceiverPublisher(
194 DtLgrDisSimulationManager&,
const DtPdu& pdu);
196 static DtLgrPublisherInterface* createGriddedDataPublisher(
197 DtLgrDisSimulationManager&,
const DtPdu& pdu);
199 typedef std::map<DtPduKind,LgrPublisherCreator> DtPublisherFunctionMap;
201 typedef std::set<DtPduKind> DtPduKindSet;
203 DtPduKindSet myPublishedKinds;
204 DtPduKindSet myMessageStateKinds;
205 DtPublisherFunctionMap myPublisherMap;
206 DtLgrDisMessageState* myMessageState;
207 DtLgrDisSimInput* myInput;
208 DtLgrDisSimOutput* myOutput;
209 DtDisDescriptor* myDisDescriptor;
210 DtLgrDisEntityTypeManager* myEntityTypeManager;
211 DtLgrDisSimDriver& mySimDriver;
213 DtRelativeTime myHeartbeatRate;
214 DtRelativeTime myTimeoutRate;
215 bool myScaleArticulatedpartsFlag;
216 double myDrainInputMaxTime;
217 int myNumPdusToReadPerTimeCheck;
219 DtLgrConfigData myConfigData;
Defines IMPORT/EXPORT macros for lgrSim library.
#define DT_DLL_LGRSIM
Definition: lgrSim.h:21
Contains MAKLogger::DtLgrBaseSimManager class.
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
Contains DT_VIRTUAL_CTR DT_VIRTUAL_CTR_DEFAULTS DT_VIRTUAL_COPY_ASSIGN DT_VIRTUAL_BASE_CTR DT_PURE_VI...
Contains MAKLogger::DtAbsoluteTime and MAKLogger::DtRelativeTime classes.
Contains MAKLogger::DtLgrConfigData class.