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* createAggregateStatePublisher(
182 DtLgrDisSimulationManager&,
const DtPdu& pdu);
184 static DtLgrPublisherInterface* createEnvironmentalProcessPublisher(
185 DtLgrDisSimulationManager&,
const DtPdu& pdu);
187 static DtLgrPublisherInterface* createTransmitterPublisher(
188 DtLgrDisSimulationManager&,
const DtPdu& pdu);
190 static DtLgrPublisherInterface* createReceiverPublisher(
191 DtLgrDisSimulationManager&,
const DtPdu& pdu);
193 static DtLgrPublisherInterface* createGriddedDataPublisher(
194 DtLgrDisSimulationManager&,
const DtPdu& pdu);
196 typedef std::map<DtPduKind,LgrPublisherCreator> DtPublisherFunctionMap;
198 typedef std::set<DtPduKind> DtPduKindSet;
200 DtPduKindSet myPublishedKinds;
201 DtPduKindSet myMessageStateKinds;
202 DtPublisherFunctionMap myPublisherMap;
203 DtLgrDisMessageState* myMessageState;
204 DtLgrDisSimInput* myInput;
205 DtLgrDisSimOutput* myOutput;
206 DtDisDescriptor* myDisDescriptor;
207 DtLgrDisEntityTypeManager* myEntityTypeManager;
208 DtLgrDisSimDriver& mySimDriver;
210 DtRelativeTime myHeartbeatRate;
211 DtRelativeTime myTimeoutRate;
212 bool myScaleArticulatedpartsFlag;
213 double myDrainInputMaxTime;
214 int myNumPdusToReadPerTimeCheck;
216 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.