MAK RTIspy API Documentation for HLA 1516
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
connInfoMgr.h
Go to the documentation of this file.
1 /****************************************************************************
2  * Copyright (c) 2016 VT MAK
3  * All rights reserved.
4  ****************************************************************************/
5 
9 
10 #pragma once
11 
12 #include "rtiMsConfig.h"
13 #include "assistantMgr.h"
14 #include "assistantLicServerInfo.h"
15 #include "assistantMsgQueue.h"
16 #include "connectionsCache.h"
17 #include "rtiAssistantClient.h"
20 #include <boost/uuid/uuid.hpp>
21 #include "assistantAppUtil.h"
22 
24 class DtRtiAssistantPeer;
28 class DtAssistantInfoMsg;
33 
35 {
42  std::map<int, DtRtiConnectionInfo> rtiexecs;
43  std::map<int, DtRtiConnectionInfo> forwarders;
44 };
45 
50 { Q_OBJECT;
51 public:
52 
54  DtAssistantConnectionInfoMgr( DtBoost::shared_ptr<DtRtiAssistantServer> server,
55  DtBoost::shared_ptr<DtRtiAssistantPeer> peer,
56  DtAssistantSignalRouter& signalRouter,
57  const MAKRti::DtFilename& configDir,
58  const MAKRti::DtString& logFileName);
59 
62 
63  struct cmpByBoostUuid {
64  bool operator()(const DtAssistantInfo& a, const DtAssistantInfo& b) const {
65  return *reinterpret_cast<const boost::uuids::uuid*>(&a.uuid()) < *reinterpret_cast<const boost::uuids::uuid*>(&b.uuid());
66  }
67  };
68  typedef std::map< DtAssistantInfo, DtAssistantState, cmpByBoostUuid > DtAssistantStateMap;
69  typedef std::pair< DtAssistantInfo, DtAssistantState > DtAssistantStatePair;
70 
71 private:
72 
75 
78 
79 public:
80 
82  virtual void initialize();
83 
85  virtual void tick();
86 
88  virtual void startShutdown();
89 
91  virtual bool isCacheFileVersionOld() const;
92 
94  virtual unsigned int lightweightMemoryPeriod() const;
95 
97  virtual unsigned int lightweightHeartbeatInterval() const;
98 
100  virtual unsigned int assistantMemoryPeriod() const;
101 
104  virtual unsigned int assistantHeartbeatInterval() const;
105 
108  virtual unsigned int requestedAssistantHeartbeatInterval() const;
109 
111  virtual bool acceptRemoteCommands() const;
112 
114  virtual bool sendForeignQuery() const;
115 
117  virtual bool remoteAssistantAcceptsCommands( const DtAssistantInfo& assistant ) const;
118 
121  virtual bool hostHasARemoteAssistantThatAcceptsCommands(
122  const DtHostNameAddress& host, const DtInetAddr& publicAddr, const MAKRti::DtInetAddr& interfaceAddr) const;
123 
125  virtual int getRemoteAssistants(const DtString& hostName, DtAssistantInfoSet& assistants) const;
126 
128  virtual int getRemoteAssistants(const DtInetAddr& hostIp, DtAssistantInfoSet& assistants) const;
129 
131  virtual const DtAssistantInfo* remoteAssistant(const DtString& hostName) const;
132 
134  virtual const DtAssistantInfo* remoteAssistant(const DtInetAddr& hostIp) const;
135 
136  virtual const DtAssistantInfo* remoteAssistant(const DtAssistantUuid& uuid) const;
137 
140  virtual int localRtiexecCompId( const DtRtiConnectionInfo& conn ) const;
141 
143  //1 or returns -1 if not found.
144  virtual int localRtiForwarderCompId( const DtRtiConnectionInfo& conn ) const;
145 
148  virtual bool getRemoteRtiexecLocation( const DtRtiConnectionInfo& conn,
149  DtAssistantInfo& assistant, int& id ) const;
150 
154  virtual bool getRtiExecConnection(const DtRtiConnectionInfo& conn, DtRtiConnectionInfo& rtiExecConn) const;
155 
158  virtual bool getRemoteRtiForwarderLocation( const DtRtiConnectionInfo& conn,
159  DtAssistantInfo& assistant, int& id ) const;
160 
163  virtual bool getRemoteRtiexecConnInfo( const DtAssistantInfo& assistant,
164  int id, DtRtiConnectionInfoDataPair& conn ) const;
165 
168  virtual bool getRemoteForwarderConnInfo( const DtAssistantInfo& assistant,
169  int id, DtRtiConnectionInfoDataPair& conn ) const;
170 
172  virtual bool getChosenConnection( DtRtiConnectionInfoDataPair& conn );
173 
175  virtual bool getChosenConfiguration( DtRtiConfigurationInfoDataPair& config );
176 
179  virtual bool getConnectionInfo( DtRtiConnectionInfoDataPair& conn );
180 
184  virtual bool getConfigurationForConn( const DtRtiConnectionInfo& conn,
186 
188  virtual MAKRti::DtString connectionName( const DtRtiConnectionInfo& conn );
189 
193  virtual bool isStillDefaultChosen() const;
194 
196  virtual const DtRtiConnectionAndConfiguration& connectionsAndConfigurations();
197 
199  virtual void addUserDefinedConnections( const DtRtiConnectionAndConfiguration& conns );
200 
202  virtual void removeUserDeletedConnections( const DtRtiConnectionAndConfiguration& conns );
203 
205  virtual void removeAllLocalRtiexecsForwarders();
206 
208  virtual void removeAllLocalLightweightConns();
209 
213  virtual bool isConnConflicting( const DtRtiConnectionInfo& conn,
214  MAKRti::DtString& reason ) const;
215 
217  void saveConnections();
218 
219  DtNetU128 rawUuid() const;
220 
221 protected:
222 
225 
226 
227  static void processQueryMsg(const DtAssistantQueryMsg& queryMsg, void* usr);
228  virtual void processQueryMsg(const DtAssistantQueryMsg& queryMsg);
229 
231  static void processInfoMsg(const DtAssistantInfoMsg& infoMsg, void* usr);
232  virtual void processInfoMsg(const DtAssistantInfoMsg& infoMsg);
233 
235  static void processLightweightInfoMsg(const DtAssistantLightweightInfoMsg& infoMsg, void* usr);
236  virtual void processLightweightInfoMsg(const DtAssistantLightweightInfoMsg& infoMsg);
237 
239  static void processRemovalMsg(const DtAssistantRemovalMsg& remMsg, void* usr);
240  virtual void processRemovalMsg(const DtAssistantRemovalMsg& remMsg);
241 
243  static void processStartRtiexecMsg(const DtAssistantStartRtiexecMsg& msg, void* usr);
244  virtual void processStartRtiexecMsg(const DtAssistantStartRtiexecMsg& msg );
245 
247  static void processStartRtiForwarderMsg(const DtAssistantStartRtiForwarderMsg& msg, void* usr);
248  virtual void processStartRtiForwarderMsg(const DtAssistantStartRtiForwarderMsg& msg );
249 
251 
253  static void processInterfaceFound( void* usr );
254 
257  virtual void processInterfaceFound();
258 
259 signals:
260 
263  void heartbeat();
264 
267  void prune();
268 
270  void connectionsAddedOrUpdated( const DtRtiConnectionAndConfiguration& conns );
271 
273  void connectionsAboutToBeRemoved( const DtRtiConnectionAndConfiguration& conns );
274 
276  void connectionsRemoved( const DtRtiConnectionAndConfiguration& conns );
277 
279  void assistantFound( const DtAssistantInfo& info );
280 
282  void assistantLost( const DtAssistantInfo& info );
283 
285  void rtiexecStartupRequested( const DtRtiConnectionInfoDataPair&,
286  const DtRtiConnectionConfigurationInfo&, bool );
287 
289  void rtiForwarderStartupRequested( const DtRtiConnectionInfoDataPair&,
290  const DtRtiConnectionConfigurationInfo&, bool );
291 
292  void assistantConnectionInformationUpdated(const DtAssistantConnectionStruct&, const DtAssistantConnectionStruct&);
293 
294 public slots:
295 
297  void processLocalRtiComponentConnected( const DtAssistantComponentInfo* compInfo );
298 
300  void processLocalRtiComponentNotConnected( const DtAssistantComponentInfo* compInfo );
301 
303  void processLocalForwarderHasRtiexec( const DtAssistantComponentInfo* compInfo );
304 
306  void processLocalForwarderHasNoRtiexec( const DtAssistantComponentInfo* compInfo );
307 
309  void processNewChosenConnection( const DtRtiConnectionInfo& conn );
310 
312  void processNewChosenConfiguration( const DtRtiConnectionConfigurationInfo& config );
313 
315  void processLocalInterfaceConfiguration(const DtRtiConnectionInfoDataPair& config, const DtRtiConnectionConfigurationInfo& configInfo);
316 
318  void processClearChosenConnection();
319 
321  void setLightweightMemory( unsigned int newVal );
322 
324  void setAssistantUpdateInterval( unsigned int newVal );
325 
327  void setAcceptRemoteCommands( bool newVal );
328 
330  void setSendForeignQuery( bool newVal );
331 
332  void provideAssistantInfo(const DtAssistantUuid& assistantUuid, DtAssistantInfo* infoIn);
333 
335  virtual void addAssistantConnection(const DtAssistantConnectionStruct& connection);
336  virtual bool remoteAddAssistantConnection(const DtAssistantConnectionStruct& connection);
337  virtual void removeAssistantConnection(const DtAssistantConnectionStruct& connection);
338 
339  virtual bool isRemoteAddressAssistantConnection(const DtInetAddr& localDeviceAddr, const DtInetAddr& remoteAddr);
340 
341  void assistantToAssistantConnectionUpdated(const DtAssistantConnectionStruct&, DtAssistantConnectionState);
342 protected:
343 
345  virtual void heartbeatAssistant();
346 
348  virtual void heartbeatLightweightConnections();
349 
352  virtual void pruneStaleLightweightConns();
353 
356  virtual void checkForStaleAssistantsExecsFwrdrs();
357 
358  virtual void pruneStaleAssistantExecsFwrdrs(DtRtiConnectionAndConfiguration& connsToRemove,
359  DtRtiConnectionAndConfiguration& updatedConns);
360 
364  virtual void determineHeartbeatIntervals();
365 
367  virtual DtAssistantStateMap::iterator addRemoteAssistant( const DtAssistantInfo& assistant);
368 
372  virtual void unverifyRtiexecsForwardersForAssistant(const DtAssistantState& assistantState,
373  DtRtiConnectionAndConfiguration& connsToRemove,
374  DtRtiConnectionAndConfiguration& updatedConns );
375 
380  virtual void unverifyListedRtiexecsForwardersForAssistant(
381  const DtRtiConnectionAndConfiguration& removeList,
382  DtAssistantStateMap::iterator astntIter,
383  DtRtiConnectionAndConfiguration& connsToRemove,
384  DtRtiConnectionAndConfiguration& updatedConns );
385 
390  virtual void addListedRtiexecsForwardersForAssistant(
391  const DtRtiConnectionAndConfiguration& addList,
392  DtAssistantStateMap::iterator astntIter,
393  DtRtiConnectionAndConfiguration& connsToRemove,
394  DtRtiConnectionAndConfiguration& updatedConns );
395 
397  virtual void checkForConflictingConns( DtRtiConnectionAndConfiguration& updatedConns );
398 
400  virtual void removeConnections( const DtRtiConnectionAndConfiguration& connsToRemove );
401 
403  virtual void setInterfaceForPredefinedConns( const MAKRti::DtInetAddr& interfaceAddr );
404 
405 
406 protected:
407 
409  DtBoost::shared_ptr<DtConnectionCache> myConnectionCache;
410 
413 
416 
418  DtClock myClock;
419 
423 
427 
431 
435 
438 
441 
445 
449 
451  MAKRti::DtString myHostName;
452 
455 
458 
461 
466 
470 
474 
478 
480  MAKRti::DtString myLogFileName;
481 
482 };

Document ID: Generated on Mon Jul 9 10:30:41 EDT 2018 from SVN revision 190224
Copyright © 2005-2018 VT MÄK Inc. All Rights Reserved (www.mak.com)