MAK Data Logger API Documentation for HLA
serverExerciseConnection.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 1992-2012 VT MAK
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
13 
14 #include <vl/exerciseConnHLA.h>
15 
16 #include <map>
17 #include <vector>
18 
19 class DtMutex;
20 
21 namespace MAKTrafficClientServerExConn
22 {
23  class DtClientExerciseConnection;
24  class DtServerFederateAmbassador;
26 
27  typedef std::map<unsigned int, DtClientExerciseConnection*> DtClientConnectionMap;
28 
29  typedef void (*DtAddConnectionCb)(DtClientExerciseConnection* conn, void* usr);
31  typedef std::map<void*, DtAddConnectionCb> DtAddConnectionCbMap;
32  typedef std::map<void*, DtRemoveConnectionCb> DtRemoveConnectionCbMap;
33 
35  {
36 
37  public:
38 
41  DtServerExerciseConnection(const DtExerciseConnInitializer& init, InitializationStatus* status = 0);
42 
53  DtServerExerciseConnection(const char* execName,
54  const char* federateType,
55  DtFomMapper* mapper = DtRprFomMapper::create(0),
56  const char* fedFileName = 0,
57  InitializationStatus* status = 0);
58 
65  DtServerExerciseConnection(const char* execName,
66  const char* federateType,
67  const char* dsoName,
68  const char* fedFileName = 0,
69  void* fomMapInitData = 0,
70  InitializationStatus* status = 0);
71 
72 #if DtHLA_1516_EVOLVED
73 
78 
89  DtServerExerciseConnection(const char* execName,
90  const char* federateName,
91  const char* federateType,
92  const DtString& fedFile,
93  DtFomMapper* mapper = DtRprFomMapper::create(0),
94  const DtString& mimModule = "",
95  const std::vector<DtString>& fomModules = std::vector<DtString>(),
96  InitializationStatus* status = 0 );
97 
98 
103 
110  DtServerExerciseConnection(const char* execName,
111  const char* federateName,
112  const char* federateType,
113  const DtString& fedFile,
114  const char* dsoName,
115  void* fomMapInitData = 0,
116  const DtString& mimModule = "",
117  const std::vector<DtString>& fomModules = std::vector<DtString>(),
118  InitializationStatus* status = 0 );
119 #endif
120 
121 
123  virtual ~DtServerExerciseConnection();
124 
125  private:
126 
129 
132 
133  public:
134 
136  virtual const DtString& clientExecName() const;
137 
139  virtual DtServerRtiAmbassador* serverRtiAmb();
140 
142  virtual const DtString& fedFileName() const;
143 
145  virtual const std::wstring& mimModule() const;
146 
148  virtual const DtString& mimModuleAscii() const;
149 
151  virtual const std::vector<std::wstring>& fomModules() const;
152 
154  virtual const std::vector<DtString>& fomModulesAscii() const;
155 
158  virtual void getFomModules(std::vector<std::wstring>& allFomModules) const;
159 
162  virtual void getFomModules(std::vector<DtString>& allFomModules) const;
163 
165  virtual DtServerFederateAmbassador* serverFederateAmbassador();
166 
169  virtual void setReceiveSelfReflect(unsigned long clientID, bool enableReceiveSelfReflect);
170 
172  virtual bool receiveSelfReflectEnabled(unsigned long clientID);
173 
175  virtual void prepareToResign();
176 
178  virtual void readyToResign(DtClientExerciseConnection* client);
179 
181  virtual void rejoined(DtClientExerciseConnection* client);
182 
184  virtual void forceResign();
185 
187  virtual bool doResign() const;
188 
190  virtual bool resignReady() const;
191 
193  virtual bool resignComplete() const;
194 
196  virtual bool resignOK() const;
197 
199  virtual bool isJoined() const;
200 
203  virtual bool resign();
204 
207  virtual bool rejoin(DtString const& execName);
208 
210  virtual bool clientsRejoined() const;
211 
213  virtual void connect(DtClientExerciseConnection* client);
214 
216  virtual void disconnect(DtClientExerciseConnection* client);
217 
219  virtual DtClientConnectionMap& clientConnections();
220 
223  virtual unsigned int nextConnectionID();
224 
226  virtual void addConnectionAddedCallback(DtAddConnectionCb cbFunction, void* usr);
227 
229  virtual void removeConnectionAddedCallback(DtAddConnectionCb cbFunction, void* usr);
230 
232  virtual void addConnectionRemovedCallback(DtRemoveConnectionCb cbFunction, void* usr);
233 
235  virtual void removeConnectionRemovedCallback(DtRemoveConnectionCb cbFunction, void* usr);
236 
244  virtual int invokeCallbacks(DtClientExerciseConnection* client,
245  double maximum=-1, double minimum=0);
246 
249  virtual void getLateJoinDiscoveries(DtClientExerciseConnection* lateJoiner);
250 
260 
261 
263  virtual bool lockServiceCall();
264 
266  virtual void unlockServiceCall();
267 
269  virtual bool serviceCallLocked();
270 
272  virtual bool enterServiceCall();
273 
275  virtual void exitServiceCall();
276 
278  virtual bool inServiceCall();
280 
281  public:
282 
287  static DtServerExerciseConnection* setInstance(DtServerExerciseConnection* serverExConn,
288  bool replace=false);
289 
295  static DtServerExerciseConnection* getInstance(bool blocking=true);
296 
299 
300  protected:
301 
303  void init(InitializationStatus* status = 0);
304 
306  // that was previously subscribed and published
308  virtual bool reSubscribeAndPublish();
309 
311  virtual void removeAllObjects();
312 
313  protected:
314 
317 
319  unsigned int myNextConnectionID;
320 
323 
326 
328  std::set<unsigned int> myPendingReadyToResign;
329 
331  std::set<unsigned int> myPendingRejoined;
332 
335 
337  DtMutex* myCallbackMutex;
338 
340  unsigned int myLockService;
341 
343  unsigned int myInService;
344 
347 
350 
353 
356 
358  std::vector<DtString> myFomModulesAscii;
359 
362 
363 #ifndef DtHLA_1516_EVOLVED
364  // Dummy place holders to return by reference
365  std::vector<std::wstring> myFomModules;
366  std::wstring myMimFomModule;
367 #endif
368 
369 
370  protected:
371 
373  };
374 }

Document ID: Generated on Mon Jan 19 08:20:14 EST 2015 from SVN revision 149581
Copyright © 2005-2012 VT MÄK. All Rights Reserved (www.mak.com)