MAK RTIspy API Documentation for HLA 1.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
federationsInfoMgr.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 "assistantInfo.h"
15 #include "federationInfo.h"
17 #include <vlutil/vlSmartPointers.h>
18 #include <vlutil/vlTime.h>
19 
21 class DtRtiAssistantPeer;
22 class DtAssistantMsg;
34 class DtAssistantLogMsg;
38 class DtAssistantExitMsg;
47 
51 { Q_OBJECT;
52 public:
53 
55  DtAssistantFederationsInfoMgr( DtBoost::shared_ptr<DtRtiAssistantServer> server,
56  DtBoost::shared_ptr<DtRtiAssistantPeer> peer, DtAssistantSignalRouter& signalRouter,
57  DtBoost::shared_ptr<DtAssistantComponentMgr> compMgr,
58  DtBoost::shared_ptr<DtAssistantRidConfigInfoMgr> ridInfoMgr,
59  DtBoost::shared_ptr<DtAssistantConnectionInfoMgr> connInfoMgr,
60  DtBoost::shared_ptr<DtAssistantForwarderCompInfoMgr> netConnInfoMgr );
61 
64 
65 public:
66 
70 
71  virtual const DtFederationStateByNameMap* federations(const DtRtiConnectionInfo& conn, bool checkPeers) const;
72  virtual DtFederationStateByNameMap* federations(const DtRtiConnectionInfo& conn, bool checkPeers);
74 
77  virtual const DtAssistantFederationInfo* federationInfo(
78  const DtRtiConnectionInfo& conn, const MAKRti::DtString& name, bool checkPeers) const;
79 
81  virtual const DtAssistantFederateInfo* federateInfo(
82  const DtRtiConnectionInfo& conn, const MAKRti::DtString& federationName,
83  unsigned federateHandle);
84 
86  virtual const DtFederateInfoByHandleMap* federates(
87  const DtRtiConnectionInfo& conn, const MAKRti::DtString& federationName ) const;
88 
91  virtual bool isLocalRtiexecViewedRemotely( const DtRtiConnectionInfo& conn ) const;
92 
94  virtual void tick();
95 
97  virtual void requestSingleUpdateFromConnectedRtiexecs( int id );
98 
101  virtual void pruneTimedOutSingleUpdates();
102 
105  virtual void viewFederationsForConnection( const DtRtiConnectionInfo& conn );
106 
108  virtual void print(DtOutputStream& outputStream);
109 
112 
113 
114  static void processObserveMsg( const DtAssistantStateObserveMsg& msg, void* usr );
115 
117  virtual void processObserveMsg( const DtAssistantStateObserveMsg& msg );
118 
120  static void processExecObserveRspMsg( const DtAssistantExecObserveRspMsg& msg, void* usr );
121 
123  virtual void processExecObserveRspMsg( const DtAssistantExecObserveRspMsg& msg );
124 
126  static void processRemoteRtiexecPopupMsg( const DtAssistantPopupMsg& msg, void* usr );
127 
129  virtual void processRemoteRtiexecPopupMsg( const DtAssistantPopupMsg& msg );
130 
133  static void processFederationStateMsg( const DtAssistantFederationStateMsg& msg, void* usr );
134 
137  virtual void processFederationStateMsg( const DtAssistantFederationStateMsg& msg );
138 
140  static void processFederateStateMsg( const DtAssistantFederateStateMsg& msg, void* usr );
141 
144  virtual void processFederateStateMsg( const DtAssistantFederateStateMsg& msg );
145 
148  static void processExecStateMsgForConnection(
149  const DtAssistantExecStateMsg& msg, void* usr );
150 
153  virtual void processExecStateMsgForConnection( const DtAssistantExecStateMsg& msg );
154 
156  static void processTimeStateMsg( const DtAssistantTimeStateMsg& msg, void* usr );
157 
160  virtual void processTimeStateMsg( const DtAssistantTimeStateMsg& msg );
161 
163  static void processSyncPtStateMsg( const DtAssistantSyncPtUpdateMsg& msg, void* usr );
164 
167  virtual void processSyncPtStateMsg( const DtAssistantSyncPtUpdateMsg& msg );
168 
170  static void processAssistantCommandMsg(const DtAssistantCommandMsg& msg, void* usr);
171 
173  virtual void processAssistantCommandMsg(const DtAssistantCommandMsg& msg);
174 
176  static void processFederateDeleteMsg( const DtAssistantDeleteFederateMsg& msg, void* usr );
177 
179  static void processFederationDeleteMsg( const DtAssistantDeleteFederationMsg& msg, void* usr );
180 
182  static void processFederateRequestMsg( const DtAssistantFederateReqMsg& msg, void* usr );
183 
185  virtual void processFederateRequestMsg( const DtAssistantFederateReqMsg& msg );
186 
188  static void processFederateResponseMsg( const DtAssistantFederateRespMsg& msg, void* usr );
189 
191  virtual void processFederateResponseMsg( const DtAssistantFederateRespMsg& msg );
192 
195  static void forwardRtiexecNotifyMsg( const DtAssistantNotifyMsg& msg, void* usr );
196 
199  static void forwardRtiexecPopupMsg( const DtAssistantPopupMsg& msg, void* usr );
200 
203  static void forwardRtiexecLogMsg( const DtAssistantLogMsg& msg, void* usr );
204 
206  static void forwardLogRequestMsg( const DtAssistantLogRequestMsg& msg, void* usr );
207 
210  static void forwardRtiexecExitMsg( const DtAssistantExitMsg& msg, void* usr );
211 
215  virtual void forwardMsgToLocalRtiexec( const DtAssistantMsg& msg,
216  bool sendOnlyIfCommandsAccepted = false );
217 
220  virtual void forwardMsgFromLocalRtiexec( const DtAssistantMsg& msg );
221 
223  static void processSignalTickedMsg( const DtAssistantSignalTickedMsg& msg, void* usr );
224 
226  virtual void processSignalTickedMsg( const DtAssistantSignalTickedMsg& msg );
227 
229 
230 public slots:
231 
233  void processLocalFederateJoined( const DtAssistantComponentInfo* info,
234  const MAKRti::DtString& federateType, const MAKRti::DtString& federateName,
235  unsigned federateHandle, const MAKRti::DtString& federationName,
236  unsigned federationHandle, DtHlaVersionId hlaVersion );
237 
239  void processLocalFederateResigned( const DtAssistantComponentInfo* );
240 
242  void processConnectionsUpdate( const DtRtiConnectionAndConfiguration& conns );
243 
245  void processConnectionsRemoval( const DtRtiConnectionAndConfiguration& conns );
246 
248  void sendAllFederationInfo();
249 
252  void pruneStaleFederationsAndObservers();
253 
255  void startRtiexec( const DtRtiConnectionInfoDataPair& conn,
256  const DtRtiConnectionConfigurationInfo& config,
257  bool requestedRemotely );
258 
260  void startRtiForwarder( const DtRtiConnectionInfoDataPair& conn,
261  const DtRtiConnectionConfigurationInfo& config,
262  bool requestedRemotely );
263 
266  void updateFederateWarningTickInterval( float interval );
267 
270  void sendObserveFederationsMsg();
271 
273  void provideFederateInfo( const DtRtiConnectionInfo& conn,
274  const MAKRti::DtString& federationName, unsigned federateHandle,
275  const DtAssistantFederateInfo** info );
276 
278  void provideFederationInfo( const DtRtiConnectionInfo& conn,
279  const MAKRti::DtString& federationName,
280  const DtAssistantFederationInfo** info );
281 
285  void requestFederateLoc( const DtRtiConnectionInfo& connInfo,
286  const MAKRti::DtString& federationName, unsigned federateHdl );
287 
289  void removeFederationsForRtiexec( const DtAssistantComponentInfo* );
290 
292  void forwarderHasShutdown( const DtRtiConnectionInfo& conn );
293 
294 
295 signals:
296 
298  void federationAdded( const DtRtiConnectionInfo& conn,
299  const MAKRti::DtString& federationName );
300 
302  void federationUpdated( const DtRtiConnectionInfo& conn,
303  const MAKRti::DtString& federationName );
304 
306  void federationRemoved( const DtRtiConnectionInfo& conn,
307  const MAKRti::DtString& federationName );
308 
310  void federateAdded( const DtRtiConnectionInfo& conn,
311  const MAKRti::DtString& federationName,
312  unsigned federateHandle );
313 
315  void federateUpdated( const DtRtiConnectionInfo& conn,
316  const MAKRti::DtString& federationName,
317  unsigned federateHandle );
318 
320  void federateRemoved( const DtRtiConnectionInfo& conn,
321  const MAKRti::DtString& federationName,
322  unsigned federateHandle );
323 
325  void rtiexecHasNoFederations( const DtRtiConnectionInfo& conn );
326 
329  void federateLocReceived( const DtRtiConnectionInfo& connInfo,
330  const MAKRti::DtString& federationName, unsigned federateHdl,
331  const DtAssistantInfo& astnt, unsigned compId );
332 
333 protected:
334 
337  {
338  bool operator()(const DtRtiConnectionInfo& left, const DtRtiConnectionInfo& right) const
339  {
340  return (left.useRtiexec() < right.useRtiexec() || (left.useRtiexec() == right.useRtiexec()
341  && (
342  (!left.useRtiexec() // Lightweight connections
343  && (left.udpPort() < right.udpPort() || (left.udpPort() == right.udpPort()
344  && left.udpAddress() < right.udpAddress())))
345  ||
346  (left.useRtiexec() // RTI Exec connections
347  && (left.tcpPort() < right.tcpPort() || (left.tcpPort() == right.tcpPort()
348  && (left.udpPort() < right.udpPort() || (left.udpPort() == right.udpPort()
349  && (left.forwarderPort() < right.forwarderPort() || (left.forwarderPort() == right.forwarderPort()
350  && (left.udpAddress() < right.udpAddress() || (left.udpAddress() == right.udpAddress()
351  && (left.hostNameAddress() < right.hostNameAddress()))))))))))
352  )));
353  }
354  };
355 
356  typedef std::map<DtAssistantInfo,bool> DtRemoteObserversMap;
357  typedef std::map<DtRtiConnectionInfo,DtRemoteObserversMap> DtConnToObserversMap;
358  typedef std::map<DtRtiConnectionInfo, int> DtConnToCompIdMap;
360  typedef std::map<DtRtiConnectionInfo, DtFederationStateByNameMap, cmpConnectionWithoutLocalIntf> DtConnToFederationStateMap;
361 
363  virtual void refreshFederateLocationInfo(const DtRtiConnectionInfo& federationConnection, const DtString& federationName,
364  DtFederateInfoByHandleMap& federates);
365 
367  virtual void processRtiexecConnUpdate( const DtRtiConnectionInfoDataPair& rtiexec );
368 
370  virtual void processLightweightConnUpdate( const DtRtiConnectionInfoDataPair& conn );
371 
373  virtual void processConnectionRemoval( const DtRtiConnectionInfoDataPair& conn );
374 
377  virtual bool localFederateInfo( int compId, const DtAssistantFederateInfo** federate,
378  DtAssistantFederationInfo** federation );
379 
382  virtual void startRtiexecOrForwarderProcess( const DtRtiConnectionInfoDataPair& conn,
383  const DtRtiConnectionConfigurationInfo& config, const QString& processName,
384  const QStringList* specificCmds = 0 );
385 
388  virtual bool unObserveRtiexecConnection(const DtRtiConnectionInfo& conn);
389 
391  virtual void unObserveConnection(const DtRtiConnectionInfo& conn);
392 
394  virtual void observeConnection(const DtRtiConnectionInfo& conn);
395 
396 
397 private:
398 
401 
404 
405 protected:
406 
408  DtBoost::shared_ptr<DtAssistantComponentMgr> myCompMgr;
409 
411  DtBoost::shared_ptr<DtAssistantRidConfigInfoMgr> myRidInfoMgr;
412 
414  DtBoost::shared_ptr<DtAssistantConnectionInfoMgr> myConnInfoMgr;
415 
417  DtBoost::shared_ptr<DtAssistantForwarderCompInfoMgr> myNetCompInfoMgr;
418 
421 
425 
428  std::set<DtRtiConnectionInfo> myRtiForwardersRequestedForRemoteStart;
429 
432  std::set<DtRtiConnectionInfo> myRtiexecsRequestedForRemoteStart;
433 
436  std::set<DtRtiConnectionInfo> myRtiForwardersStartedByRemoteRequest;
437 
440  std::set<DtRtiConnectionInfo> myRtiexecsStartedByRemoteRequest;
441 
445 
448  std::set<DtRtiConnectionInfo> myRemotelyViewedConnectionsNeedingUpdate;
449 
452 
455 
457  MAKRti::DtClock myClock;
458 
462 
464  std::map< std::pair<int,MAKRti::DtTime>, std::map<int,MAKRti::DtString> > myRequestedRtiexecUpdates;
465 
468 
470  MAKRti::DtTime myLastTickTime;
471 
473  std::map<int,bool> myFederateSignalTickMessages;
474 
476  typedef std::pair<MAKRti::DtString,unsigned> DtFedexFederatePair;
477  typedef std::map< DtRtiConnectionInfo, std::set<DtFedexFederatePair> > DtFedsByConn;
479 
482  static const int theTimeToWaitForExecInfo;
483 
485  typedef std::map<int,DtAssistantFederateInfo> DtFedInfoByCompIdMap;
486  typedef std::pair<MAKRti::DtString,unsigned int>DtFederationNameFederateHandlePair;
487  typedef std::pair<DtRtiConnectionInfo, DtFederationNameFederateHandlePair> DtConnectionFederationNameFedHandleTriple;
488  typedef std::map<DtConnectionFederationNameFedHandleTriple,DtAssistantFederateInfo> DtFedInfoByConnFederationPairMap;
489 
492 
493 };

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)