MAK Data Logger API Documentation for HLA
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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 
283 
285 
286  static DtServerExerciseConnection* create(const DtExerciseConnInitializer& init, InitializationStatus* status = 0);
287  static DtServerExerciseConnection* create(const char* execName,
288  const char* federateType,
289  DtFomMapper* mapper = DtRprFomMapper::create(0),
290  const char* fedFileName = 0,
291  InitializationStatus* status = 0);
292  static DtServerExerciseConnection* create(const char* execName,
293  const char* federateType,
294  const char* dsoName,
295  const char* fedFileName = 0,
296  void* fomMapInitData = 0,
297  InitializationStatus* status = 0);
298 #if DtHLA_1516_EVOLVED
299  static DtServerExerciseConnection* create(const char* execName,
300  const char* federateName,
301  const char* federateType,
302  const DtString& fedFile,
303  DtFomMapper* mapper = DtRprFomMapper::create(0),
304  const DtString& mimModule = "",
305  const std::vector<DtString>& fomModules = std::vector<DtString>(),
306  InitializationStatus* status = 0 );
307  static DtServerExerciseConnection* create(const char* execName,
308  const char* federateName,
309  const char* federateType,
310  const DtString& fedFile,
311  const char* dsoName,
312  void* fomMapInitData = 0,
313  const DtString& mimModule = "",
314  const std::vector<DtString>& fomModules = std::vector<DtString>(),
315  InitializationStatus* status = 0 );
316 #endif
317 
318 
319 
324  static DtServerExerciseConnection* setInstance(DtServerExerciseConnection* serverExConn,
325  bool replace=false);
326 
332  static DtServerExerciseConnection* getInstance(bool blocking=true);
333 
336 
337  protected:
338 
340  void init(InitializationStatus* status = 0);
341 
343  // that was previously subscribed and published
345  virtual bool reSubscribeAndPublish();
346 
348  virtual void removeAllObjects();
349 
350  protected:
351 
354 
356  unsigned int myNextConnectionID;
357 
360 
363 
365  std::set<unsigned int> myPendingReadyToResign;
366 
368  std::set<unsigned int> myPendingRejoined;
369 
372 
374  DtMutex* myCallbackMutex;
375 
377  unsigned int myLockService;
378 
380  unsigned int myInService;
381 
384 
387 
390 
393 
395  std::vector<DtString> myFomModulesAscii;
396 
399 
400 #ifndef DtHLA_1516_EVOLVED
401  // Dummy place holders to return by reference
402  std::vector<std::wstring> myFomModules;
403  std::wstring myMimFomModule;
404 #endif
405 
406 
407  protected:
408 
410  };
411 }

Document ID: Generated on Thu Jul 23 15:05:27 EDT 2020 from SVN revision 215371
Copyright © 2020 MAK Technologies. All Rights Reserved (www.mak.com)