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/hExerciseConn.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 
144 #if DtHLA_1516_EVOLVED
145 
146  virtual const std::wstring& mimModule() const;
147 
149  virtual const DtString& mimModuleAscii() const;
150 
152  virtual const std::vector<std::wstring>& fomModules() const;
153 
155  virtual const std::vector<DtString>& fomModulesAscii() const;
156 
159  virtual void getFomModules(std::vector<std::wstring>& allFomModules) const;
160 
163  virtual void getFomModules(std::vector<DtString>& allFomModules) const;
164 #endif
165 
167  virtual DtServerFederateAmbassador* serverFederateAmbassador();
168 
171  virtual void setReceiveSelfReflect(unsigned long clientID, bool enableReceiveSelfReflect);
172 
174  virtual bool receiveSelfReflectEnabled(unsigned long clientID);
175 
177  virtual void prepareToResign();
178 
180  virtual void readyToResign(DtClientExerciseConnection* client);
181 
183  virtual void rejoined(DtClientExerciseConnection* client);
184 
186  virtual void forceResign();
187 
189  virtual bool doResign() const;
190 
192  virtual bool resignReady() const;
193 
195  virtual bool resignComplete() const;
196 
198  virtual bool resignOK() const;
199 
201  virtual bool isJoined() const;
202 
205  virtual bool resign();
206 
209  virtual bool rejoin(DtString const& execName);
210 
212  virtual bool clientsRejoined() const;
213 
215  virtual void connect(DtClientExerciseConnection* client);
216 
218  virtual void disconnect(DtClientExerciseConnection* client);
219 
221  virtual DtClientConnectionMap& clientConnections();
222 
225  virtual unsigned int nextConnectionID();
226 
228  virtual void addConnectionAddedCallback(DtAddConnectionCb cbFunction, void* usr);
229 
231  virtual void removeConnectionAddedCallback(DtAddConnectionCb cbFunction, void* usr);
232 
234  virtual void addConnectionRemovedCallback(DtRemoveConnectionCb cbFunction, void* usr);
235 
237  virtual void removeConnectionRemovedCallback(DtRemoveConnectionCb cbFunction, void* usr);
238 
246  virtual int invokeCallbacks(DtClientExerciseConnection* client,
247  double maximum=-1, double minimum=0);
248 
251  virtual void getLateJoinDiscoveries(DtClientExerciseConnection* lateJoiner);
252 
262 
263 
265  virtual bool lockServiceCall();
266 
268  virtual void unlockServiceCall();
269 
271  virtual bool serviceCallLocked();
272 
274  virtual bool enterServiceCall();
275 
277  virtual void exitServiceCall();
278 
280  virtual bool inServiceCall();
282 
283  public:
284 
289  static DtServerExerciseConnection* setInstance(DtServerExerciseConnection* serverExConn,
290  bool replace=false);
291 
297  static DtServerExerciseConnection* getInstance(bool blocking=true);
298 
301 
302  protected:
303 
305  void init(InitializationStatus* status = 0);
306 
308  // that was previously subscribed and published
310  virtual bool reSubscribeAndPublish();
311 
313  virtual void removeAllObjects();
314 
315  protected:
316 
319 
321  unsigned int myNextConnectionID;
322 
325 
328 
330  std::set<unsigned int> myPendingReadyToResign;
331 
333  std::set<unsigned int> myPendingRejoined;
334 
337 
339  DtMutex* myCallbackMutex;
340 
342  unsigned int myLockService;
343 
345  unsigned int myInService;
346 
349 
352 
355 
358 
359 #if DtHLA_1516_EVOLVED
360 
361  std::vector<DtString> myFomModulesAscii;
362 
364  DtString myMimFomModuleAscii;
365 #endif
366 
367 
368  protected:
369 
371  };
372 }

Document ID: Generated on Thu Apr 11 12:13:00 EDT 2013 from SVN revision 126011
Copyright © 2005-2012 VT MÄK. All Rights Reserved (www.mak.com)