MAK Data Logger API Documentation for HLA
lgrDisSimManager.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 1992-2010 VT MAK
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #ifndef lgrDisSimManager_H_
11 #define lgrDisSimManager_H_
12 
13 #if DtDIS
14 
15 #include "lgrSim.h"
16 #include "lgrBaseSimManager.h"
17 #include "virtualConstructor.h"
18 #include "absoluteTime.h"
19 #include "lgrConfigData.h"
20 
21 #include <vl/pduCbMgr.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 DtLgrClock;
41  class DtLgrDisEntityTypeManager;
42 
45  class DT_DLL_LGRSIM DtLgrDisSimulationManager : public DtLgrBaseSimManager
46  {
47  public:
48 
50  typedef DtLgrPublisherInterface* (*LgrPublisherCreator)\
51  (DtLgrDisSimulationManager*,const DtPdu& pdu);
52 
53  public:
54 
55  DT_VIRTUAL_CTR(DtLgrDisSimulationManager,(DtLogger& logger))
56 
57  virtual ~DtLgrDisSimulationManager();
58 
60  virtual void tick();
61 
63  virtual bool isConnected() const;
64 
66  virtual bool connect(DtExerciseConnInitializer& initializer);
67 
69  virtual void disconnect();
70 
72  virtual const DtLgrSimInput* input() const;
73  virtual DtLgrSimInput* input();
74 
76  virtual const DtLgrSimOutput* output() const;
77  virtual DtLgrSimOutput* output();
78 
80  virtual const DtMessageState* state() const;
81  virtual DtMessageState* state();
82 
84  virtual DtMessageState* createState() const;
85 
87  virtual DtLgrFileInput* openFileForInput(const DtString& filename) const;
88 
90  virtual DtLgrFileOutput* openFileForCopying(const DtString& filename,
91  const DtLgrFileInput* input) const;
92 
94  virtual DtLgrFileOutput* openFileForOutput(const DtString& filename) const;
95 
97  virtual DtLgrFileInput* openPartialFileForCopying(
98  const DtLgrFileOutput* output , DtFilePosition firstPacket,
99  DtFilePosition lastPacket) const;
100 
101  virtual void addReceivePduCallback(DtPduCallbackFcn receivePduCb,void* usr);
102  virtual void removeReceivePduCallback(DtPduCallbackFcn receivePduCb,void* usr);
103 
105  virtual void sendPdu(DtPdu& pdu, unsigned char desiredExerciseId );
106 
108  virtual void registerPublisher(DtPduKind,LgrPublisherCreator);
109 
111  virtual void removePublisherCreator(DtPduKind);
112 
114  virtual bool pduNeedsPublisher(DtPduKind pduKind) const;
115 
117  virtual DtLgrPublisherInterface* createPublisher(const DtPdu& pdu);
118 
120  virtual DtRelativeTime heartbeatRate() const;
121 
123  virtual void setHeartbeatRate(DtRelativeTime time);
124 
126  virtual DtRelativeTime timeoutRate() const;
127 
129  virtual void setTimeoutRate(DtRelativeTime time);
130 
132  virtual bool scaleArticulatedParts() const;
133 
135  static DtVector scaleVector(const DtVector& vec,double scaleValue);
136 
138  virtual void setDisDescription(DtDisDescriptor* desc);
139 
141  virtual void setDrainInputMaxTime(double maxTime);
142 
144  virtual double drainInputMaxTime() const;
145 
147  virtual void setNumPdusToReadPerTimeCheck(int number);
148 
150  virtual int numPdusToReadPerTimeCheck() const;
151 
153  virtual const DtDisDescriptor* disDescription() const;
154  virtual DtDisDescriptor* disDescription();
155 
157  virtual void setEntityTypeManager(DtLgrDisEntityTypeManager* mgr);
158 
160  virtual DtLgrDisEntityTypeManager* entityTypeManager();
161  virtual const DtLgrDisEntityTypeManager* entityTypeManager() const;
162 
163  virtual void setConfigurationFileName(const DtString& filename);
164 
165  protected:
166 
167  static DtLgrPublisherInterface* createEntityStatePublisher(
168  DtLgrDisSimulationManager*, const DtPdu& pdu);
169 
170  static DtLgrPublisherInterface* createAggregateStatePublisher(
171  DtLgrDisSimulationManager*,const DtPdu& pdu);
172 
173  static DtLgrPublisherInterface* createEnvironmentalProcessPublisher(
174  DtLgrDisSimulationManager*,const DtPdu& pdu);
175 
176  static DtLgrPublisherInterface* createTransmitterPublisher(
177  DtLgrDisSimulationManager*,const DtPdu& pdu);
178 
179  static DtLgrPublisherInterface* createReceiverPublisher(
180  DtLgrDisSimulationManager*,const DtPdu& pdu);
181 
182  static DtLgrPublisherInterface* createGriddedDataPublisher(
183  DtLgrDisSimulationManager*,const DtPdu& pdu);
184 
185  typedef std::map<DtPduKind,LgrPublisherCreator> DtPublisherFunctionMap;
186 
187  typedef std::set<DtPduKind> DtPduKindSet;
188 
189  DtPduKindSet myPublishedKinds;
190  DtPublisherFunctionMap myPublisherMap;
191  DtLgrDisMessageState* myMessageState;
192  DtLgrDisSimInput* myInput;
193  DtLgrDisSimOutput* myOutput;
194  DtDisDescriptor* myDisDescriptor;
195  DtLgrDisEntityTypeManager* myEntityTypeManager;
196 
197  DtRelativeTime myHeartbeatRate;
198  DtRelativeTime myTimeoutRate;
199  bool myScaleArticulatedpartsFlag;
200  double myDrainInputMaxTime;
201  int myNumPdusToReadPerTimeCheck;
202 
203  DtLgrConfigData myConfigData;
204  };
205 
206 }
207 
208 #endif
209 #endif

Document ID: Generated on Sun Dec 15 18:04:30 EST 2013 from SVN revision 134418
Copyright © 2005-2012 VT MÄK. All Rights Reserved (www.mak.com)