10 #ifndef lgrDisSimManager_H_
11 #define lgrDisSimManager_H_
21 #include <vl/pduCbMgr.h>
27 class DtExerciseConnInitializer;
34 class DtDisDescriptor;
35 class DtLgrPublisherInterface;
36 class DtLgrDisMessageState;
37 class DtLgrDisSimInput;
38 class DtLgrDisSimOutput;
39 class DtLgrFileOutput;
41 class DtLgrDisEntityTypeManager;
45 class DT_DLL_LGRSIM DtLgrDisSimulationManager :
public DtLgrBaseSimManager
50 typedef DtLgrPublisherInterface* (*LgrPublisherCreator)\
51 (DtLgrDisSimulationManager*,
const DtPdu& pdu);
57 virtual ~DtLgrDisSimulationManager();
63 virtual bool isConnected()
const;
66 virtual bool connect(DtExerciseConnInitializer& initializer);
69 virtual void disconnect();
72 virtual const DtLgrSimInput* input()
const;
73 virtual DtLgrSimInput* input();
76 virtual const DtLgrSimOutput* output()
const;
77 virtual DtLgrSimOutput* output();
80 virtual const DtMessageState* state()
const;
81 virtual DtMessageState* state();
84 virtual DtMessageState* createState()
const;
87 virtual DtLgrFileInput* openFileForInput(
const DtString& filename)
const;
90 virtual DtLgrFileOutput* openFileForCopying(
const DtString& filename,
91 const DtLgrFileInput* input)
const;
94 virtual DtLgrFileOutput* openFileForOutput(
const DtString& filename)
const;
97 virtual DtLgrFileInput* openPartialFileForCopying(
101 virtual void addReceivePduCallback(DtPduCallbackFcn receivePduCb,
void* usr);
102 virtual void removeReceivePduCallback(DtPduCallbackFcn receivePduCb,
void* usr);
105 virtual void sendPdu(
DtPdu& pdu,
unsigned char desiredExerciseId );
108 virtual void registerPublisher(DtPduKind,LgrPublisherCreator);
111 virtual void removePublisherCreator(DtPduKind);
114 virtual bool pduNeedsPublisher(DtPduKind pduKind)
const;
117 virtual DtLgrPublisherInterface* createPublisher(
const DtPdu& pdu);
120 virtual DtRelativeTime heartbeatRate()
const;
123 virtual void setHeartbeatRate(DtRelativeTime time);
126 virtual DtRelativeTime timeoutRate()
const;
129 virtual void setTimeoutRate(DtRelativeTime time);
132 virtual bool scaleArticulatedParts()
const;
135 static DtVector scaleVector(
const DtVector& vec,
double scaleValue);
138 virtual void setDisDescription(DtDisDescriptor* desc);
141 virtual void setDrainInputMaxTime(
double maxTime);
144 virtual double drainInputMaxTime()
const;
147 virtual void setNumPdusToReadPerTimeCheck(
int number);
150 virtual int numPdusToReadPerTimeCheck()
const;
153 virtual const DtDisDescriptor* disDescription()
const;
154 virtual DtDisDescriptor* disDescription();
157 virtual void setEntityTypeManager(DtLgrDisEntityTypeManager* mgr);
160 virtual DtLgrDisEntityTypeManager* entityTypeManager();
161 virtual const DtLgrDisEntityTypeManager* entityTypeManager()
const;
163 virtual void setConfigurationFileName(
const DtString& filename);
167 static DtLgrPublisherInterface* createEntityStatePublisher(
168 DtLgrDisSimulationManager*,
const DtPdu& pdu);
170 static DtLgrPublisherInterface* createAggregateStatePublisher(
171 DtLgrDisSimulationManager*,
const DtPdu& pdu);
173 static DtLgrPublisherInterface* createEnvironmentalProcessPublisher(
174 DtLgrDisSimulationManager*,
const DtPdu& pdu);
176 static DtLgrPublisherInterface* createTransmitterPublisher(
177 DtLgrDisSimulationManager*,
const DtPdu& pdu);
179 static DtLgrPublisherInterface* createReceiverPublisher(
180 DtLgrDisSimulationManager*,
const DtPdu& pdu);
182 static DtLgrPublisherInterface* createGriddedDataPublisher(
183 DtLgrDisSimulationManager*,
const DtPdu& pdu);
185 typedef std::map<DtPduKind,LgrPublisherCreator> DtPublisherFunctionMap;
187 typedef std::set<DtPduKind> DtPduKindSet;
189 DtPduKindSet myPublishedKinds;
190 DtPublisherFunctionMap myPublisherMap;
191 DtLgrDisMessageState* myMessageState;
192 DtLgrDisSimInput* myInput;
193 DtLgrDisSimOutput* myOutput;
194 DtDisDescriptor* myDisDescriptor;
195 DtLgrDisEntityTypeManager* myEntityTypeManager;
197 DtRelativeTime myHeartbeatRate;
198 DtRelativeTime myTimeoutRate;
199 bool myScaleArticulatedpartsFlag;
200 double myDrainInputMaxTime;
201 int myNumPdusToReadPerTimeCheck;
203 DtLgrConfigData myConfigData;