MAK RTIspy API Documentation for HLA Evolved
connInfoMgr.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 2009 MaK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************/
5 /*********************************************************************
6 ** $RCSfile: connInfoMgr.h,v $ $Revision: 1.19 $ $State: Exp $
7 *********************************************************************/
8 
9 #ifndef connInfoMgr_H_
10 #define connInfoMgr_H_
11 
14 
15 #include "rtiMsConfig.h"
16 #include "assistantMgr.h"
17 #include "assistantLicServerInfo.h"
18 #include "assistantMsgQueue.h"
19 #include "connectionsCache.h"
20 #include "rtiAssistantClient.h"
22 
24 class DtRtiAssistantPeer;
28 class DtAssistantInfoMsg;
32 
37 {
38  Q_OBJECT
39 
40 public:
41 
43  DtAssistantConnectionInfoMgr( DtBoost::shared_ptr<DtRtiAssistantServer> server,
44  DtBoost::shared_ptr<DtRtiAssistantPeer> peer,
45  DtAssistantSignalRouter& signalRouter,
46  const MAKRti::DtFilename& configDir,
47  const MAKRti::DtString& logFileName);
48 
51 
52 private:
53 
56 
59 
60 public:
61 
63  virtual void tick();
64 
66  virtual void startShutdown();
67 
69  virtual bool isCacheFileVersionOld() const;
70 
72  virtual unsigned int lightweightMemoryPeriod() const;
73 
75  virtual unsigned int lightweightHeartbeatInterval() const;
76 
78  virtual unsigned int assistantMemoryPeriod() const;
79 
82  virtual unsigned int assistantHeartbeatInterval() const;
83 
86  virtual unsigned int requestedAssistantHeartbeatInterval() const;
87 
89  virtual bool acceptRemoteCommands() const;
90 
92  virtual bool remoteAssistantAcceptsCommands( const DtAssistantInfo& assistant ) const;
93 
96  virtual bool hostHasARemoteAssistantThatAcceptsCommands(
97  const DtHostNameAddress& host, const MAKRti::DtInetAddr& interfaceAddr ) const;
98 
101  virtual int localRtiexecCompId( const DtRtiConnectionInfo& conn ) const;
102 
104  //1 or returns -1 if not found.
105  virtual int localRtiForwarderCompId( const DtRtiConnectionInfo& conn ) const;
106 
109  virtual bool getRemoteRtiexecLocation( const DtRtiConnectionInfo& conn,
110  DtAssistantInfo& assistant, int& id ) const;
111 
114  virtual bool getRemoteRtiForwarderLocation( const DtRtiConnectionInfo& conn,
115  DtAssistantInfo& assistant, int& id ) const;
116 
119  virtual bool getRemoteRtiexecConnInfo( const DtAssistantInfo& assistant,
120  int id, DtRtiConnectionInfoDataPair& conn ) const;
121 
124  virtual bool getRemoteForwarderConnInfo( const DtAssistantInfo& assistant,
125  int id, DtRtiConnectionInfoDataPair& conn ) const;
126 
129  virtual bool getChosenConnectionAndConfiguration( DtRtiConnectionInfoDataPair& conn,
131 
134  virtual bool getConnectionInfo( DtRtiConnectionInfoDataPair& conn );
135 
139  virtual bool getConfigurationForConn( const DtRtiConnectionInfo& conn,
141 
143  virtual MAKRti::DtString connectionName( const DtRtiConnectionInfo& conn );
144 
148  virtual bool isStillDefaultChosen() const;
149 
151  virtual const DtRtiConnectionAndConfiguration& connectionsAndConfigurations();
152 
154  virtual void addUserDefinedConnections( const DtRtiConnectionAndConfiguration& conns );
155 
157  virtual void removeUserDeletedConnections( const DtRtiConnectionAndConfiguration& conns );
158 
160  virtual void removeAllLocalRtiexecsForwarders();
161 
163  virtual void removeAllLocalLightweightConns();
164 
168  virtual bool isConnConflicting( const DtRtiConnectionInfo& conn,
169  MAKRti::DtString& reason ) const;
170 
172  void saveConnections();
173 
174 protected:
175 
178 
179 
180  static void processQueryMsg(const DtAssistantQueryMsg& queryMsg, void* usr);
181  virtual void processQueryMsg(const DtAssistantQueryMsg& queryMsg);
182 
184  static void processInfoMsg(const DtAssistantInfoMsg& infoMsg, void* usr);
185  virtual void processInfoMsg(const DtAssistantInfoMsg& infoMsg);
186 
188  static void processLightweightInfoMsg(const DtAssistantLightweightInfoMsg& infoMsg, void* usr);
189  virtual void processLightweightInfoMsg(const DtAssistantLightweightInfoMsg& infoMsg);
190 
192  static void processRemovalMsg(const DtAssistantRemovalMsg& remMsg, void* usr);
193  virtual void processRemovalMsg(const DtAssistantRemovalMsg& remMsg);
194 
196  static void processStartRtiexecMsg( const DtAssistantStartRtiexecMsg& msg, void* usr);
197  virtual void processStartRtiexecMsg( const DtAssistantStartRtiexecMsg& msg );
198 
200 
202  static void processInterfaceFound( void* usr );
203 
206  virtual void processInterfaceFound();
207 
209  {
210  DtAssistantState() : heartbeated( true ), lightweightInactivePeriod(120),
211  assistantInactivePeriod(10), acceptsRemoteCommands(true) {}
216  std::map<int, DtRtiConnectionInfo> rtiexecs;
217  std::map<int, DtRtiConnectionInfo> forwarders;
218  };
219  typedef std::map< DtAssistantInfo, DtAssistantState > DtAssistantStateMap;
220  typedef std::pair< DtAssistantInfo, DtAssistantState > DtAssistantStatePair;
221 
222 
223 signals:
224 
227  void heartbeat();
228 
231  void prune();
232 
234  void connectionsAddedOrUpdated( const DtRtiConnectionAndConfiguration& conns );
235 
237  void connectionsAboutToBeRemoved( const DtRtiConnectionAndConfiguration& conns );
238 
240  void connectionsRemoved( const DtRtiConnectionAndConfiguration& conns );
241 
243  void assistantFound( const DtAssistantInfo& info );
244 
246  void assistantLost( const DtAssistantInfo& info );
247 
249  void rtiexecStartupRequested( const DtRtiConnectionInfoDataPair&,
250  const DtRtiConnectionConfigurationInfo&, bool );
251 
252 public slots:
253 
255  void processLocalRtiComponentConnected( const DtAssistantComponentInfo* compInfo );
256 
258  void processLocalRtiComponentNotConnected( const DtAssistantComponentInfo* compInfo );
259 
261  void processLocalForwarderHasRtiexec( const DtAssistantComponentInfo* compInfo );
262 
264  void processLocalForwarderHasNoRtiexec( const DtAssistantComponentInfo* compInfo );
265 
267  void processNewChosenConnection( const DtRtiConnectionInfo& conn,
268  const DtRtiConnectionConfigurationInfo& config );
269 
271  void processClearChosenConnection();
272 
274  void setLightweightMemory( unsigned int newVal );
275 
277  void setAssistantUpdateInterval( unsigned int newVal );
278 
280  void setAcceptRemoteCommands( bool newVal );
281 
282 protected:
283 
285  virtual void heartbeatAssistant();
286 
288  virtual void heartbeatLightweightConnections();
289 
292  virtual void pruneStaleLightweightConns();
293 
296  virtual void pruneStaleAssistantsExecsFwrdrs();
297 
301  virtual void determineHeartbeatIntervals();
302 
305  virtual DtAssistantStateMap::iterator findOrAddRemoteAssistant( const DtAssistantInfo& assistant );
306 
310  virtual void unverifyRtiexecsForwardersForAssistant( DtAssistantStateMap::iterator astntIter,
311  DtRtiConnectionAndConfiguration& connsToRemove,
312  DtRtiConnectionAndConfiguration& updatedConns );
313 
318  virtual void unverifyListedRtiexecsForwardersForAssistant(
319  const DtRtiConnectionAndConfiguration& removeList,
320  DtAssistantStateMap::iterator astntIter,
321  DtRtiConnectionAndConfiguration& connsToRemove,
322  DtRtiConnectionAndConfiguration& updatedConns );
323 
328  virtual void addListedRtiexecsForwardersForAssistant(
329  const DtRtiConnectionAndConfiguration& addList,
330  DtAssistantStateMap::iterator astntIter,
331  DtRtiConnectionAndConfiguration& connsToRemove,
332  DtRtiConnectionAndConfiguration& updatedConns );
333 
336  virtual void checkForConflictingConns(
337  DtRtiConnectionAndConfiguration& updatedConns );
338 
341  virtual void removeConnections(
342  const DtRtiConnectionAndConfiguration& connsToRemove );
343 
346  virtual void setInterfaceForPredefinedConns( const MAKRti::DtInetAddr& interfaceAddr );
347 
348 protected:
349 
351  DtBoost::shared_ptr<DtConnectionCache> myConnectionCache;
352 
355 
357  DtClock myClock;
358 
362 
366 
370 
374 
377 
380 
384 
388 
390  MAKRti::DtString myHostName;
391 
394 
397 
400 
405 
409 
413 
417 
419  MAKRti::DtString myLogFileName;
420 };
421 
422 #endif

Document ID: Generated on Tue May 7 16:26:47 EDT 2013 from SVN revision 126903
Copyright © 2005-2013 VT MÄK Inc. All Rights Reserved (www.mak.com)