![]() |
MAK RTIspy API Documentation for HLA Evolved
|
00001 /********************************************************************* 00002 ** Copyright (c) 2011 MaK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: federationsInfoMgr.h,v $ $Revision: 1.16 $ $State: Exp $ 00007 *********************************************************************/ 00008 00009 #ifndef federationsInfoMgr_H_ 00010 #define federationsInfoMgr_H_ 00011 00014 00015 #include "rtiMsConfig.h" 00016 #include "assistantMgr.h" 00017 #include "assistantInfo.h" 00018 #include "federationInfo.h" 00019 #include "connectionAndConfiguration.h" 00020 #include <vlutil/vlSmartPointers.h> 00021 #include <vlutil/vlTime.h> 00022 00023 class DtRtiAssistantServer; 00024 class DtRtiAssistantPeer; 00025 class DtAssistantMsg; 00026 class DtAssistantFederationStateMsg; 00027 class DtAssistantFederateStateMsg; 00028 class DtAssistantTimeStateMsg; 00029 class DtAssistantSyncPtUpdateMsg; 00030 class DtAssistantStateObserveMsg; 00031 class DtAssistantCommandMsg; 00032 class DtAssistantDeleteFederateMsg; 00033 class DtAssistantDeleteFederationMsg; 00034 class DtAssistantRidParamsMsg; 00035 class DtAssistantExecStateMsg; 00036 class DtAssistantNotifyMsg; 00037 class DtAssistantPopupMsg; 00038 class DtAssistantLogMsg; 00039 class DtAssistantLogRequestMsg; 00040 class DtAssistantSignalTickedMsg; 00041 class DtAssistantExecObserveRspMsg; 00042 class DtAssistantExitMsg; 00043 class DtAssistantComponentMgr; 00044 class DtAssistantConnectionInfoMgr; 00045 class DtAssistantPreferencesInfoMgr; 00046 00049 class DT_DLL_ASSISTANTAPP DtAssistantFederationsInfoMgr : public DtAssistantMgr 00050 { 00051 Q_OBJECT 00052 00053 public: 00054 00056 DtAssistantFederationsInfoMgr( DtBoost::shared_ptr<DtRtiAssistantServer> server, 00057 DtBoost::shared_ptr<DtRtiAssistantPeer> peer, 00058 DtBoost::shared_ptr<DtAssistantPreferencesInfoMgr> prefMgr, 00059 DtBoost::shared_ptr<DtAssistantComponentMgr> compMgr, 00060 DtBoost::shared_ptr<DtAssistantConnectionInfoMgr> connInfoMgr, 00061 const MAKRti::DtFilename& configDir ); 00062 00064 ~DtAssistantFederationsInfoMgr(); 00065 00066 private: 00067 00069 DtAssistantFederationsInfoMgr(DtAssistantFederationsInfoMgr const& ); 00070 00072 DtAssistantFederationsInfoMgr& operator= (DtAssistantFederationsInfoMgr const& ); 00073 00074 00075 public: 00076 00078 virtual const DtAssistantFederationInfo* federationInfo( 00079 const DtRtiConnectionInfo& conn, const MAKRti::DtString& name) const; 00080 00082 virtual const DtFederationStateByNameMap* federations( 00083 const DtRtiConnectionInfo& conn) const; 00084 00086 virtual const DtAssistantFederateInfo* federateInfo( 00087 const DtRtiConnectionInfo& conn, const MAKRti::DtString& federationName, 00088 unsigned federateHandle); 00089 00091 virtual const DtFederateInfoByHandleMap* federates( 00092 const DtRtiConnectionInfo& conn, const MAKRti::DtString& federationName) const; 00093 00096 virtual int localRtiexecCompId(const DtRtiConnectionInfo& conn) const; 00097 00100 virtual bool isLocalRtiexecViewedRemotely(const DtRtiConnectionInfo& conn) const; 00101 00103 virtual void tick(); 00104 00106 virtual void requestSingleUpdateFromConnectedRtiexecs(int id); 00107 00110 virtual void pruneTimedOutSingleUpdates(); 00111 00114 virtual void viewFederationsForConnection(const DtRtiConnectionInfo& conn); 00115 00118 00119 00120 static void processObserveMsg( const DtAssistantStateObserveMsg& msg, void* usr ); 00121 00123 virtual void processObserveMsg( const DtAssistantStateObserveMsg& msg ); 00124 00126 static void processExecObserveRspMsg( const DtAssistantExecObserveRspMsg& msg, void* usr ); 00127 00129 virtual void processExecObserveRspMsg( const DtAssistantExecObserveRspMsg& msg ); 00130 00132 static void processRemoteRtiexecPopupMsg( const DtAssistantPopupMsg& msg, void* usr ); 00133 00135 virtual void processRemoteRtiexecPopupMsg( const DtAssistantPopupMsg& msg ); 00136 00139 static void processFederationStateMsg( const DtAssistantFederationStateMsg& msg, void* usr ); 00140 00143 virtual void processFederationStateMsg( const DtAssistantFederationStateMsg& msg ); 00144 00146 static void processFederateStateMsg( const DtAssistantFederateStateMsg& msg, void* usr ); 00147 00150 virtual void processFederateStateMsg( const DtAssistantFederateStateMsg& msg ); 00151 00154 static void processExecStateMsgForConnection( 00155 const DtAssistantExecStateMsg& msg, void* usr ); 00156 00159 virtual void processExecStateMsgForConnection( const DtAssistantExecStateMsg& msg ); 00160 00162 static void processTimeStateMsg( const DtAssistantTimeStateMsg& msg, void* usr ); 00163 00166 virtual void processTimeStateMsg( const DtAssistantTimeStateMsg& msg ); 00167 00169 static void processSyncPtStateMsg( const DtAssistantSyncPtUpdateMsg& msg, void* usr ); 00170 00173 virtual void processSyncPtStateMsg( const DtAssistantSyncPtUpdateMsg& msg ); 00174 00176 static void processAssistantCommandMsg(const DtAssistantCommandMsg& msg, void* usr); 00177 00179 virtual void processAssistantCommandMsg(const DtAssistantCommandMsg& msg); 00180 00182 static void processFederateDeleteMsg( const DtAssistantDeleteFederateMsg& msg, void* usr ); 00183 00185 static void processFederationDeleteMsg( const DtAssistantDeleteFederationMsg& msg, void* usr ); 00186 00189 static void forwardRtiexecNotifyMsg( const DtAssistantNotifyMsg& msg, void* usr ); 00190 00193 static void forwardRtiexecPopupMsg( const DtAssistantPopupMsg& msg, void* usr ); 00194 00197 static void forwardRtiexecLogMsg( const DtAssistantLogMsg& msg, void* usr ); 00198 00200 static void forwardLogRequestMsg( const DtAssistantLogRequestMsg& msg, void* usr ); 00201 00204 static void forwardRtiexecExitMsg( const DtAssistantExitMsg& msg, void* usr ); 00205 00209 virtual void forwardMsgToLocalRtiexec( const DtAssistantMsg& msg, 00210 bool sendOnlyIfCommandsAccepted = false ); 00211 00214 virtual void forwardMsgFromLocalRtiexec( const DtAssistantMsg& msg ); 00215 00217 static void processSignalTickedMsg( const DtAssistantSignalTickedMsg& msg, void* usr ); 00218 00220 virtual void processSignalTickedMsg( const DtAssistantSignalTickedMsg& msg ); 00221 00223 00224 00225 public slots: 00226 00228 void processLocalFederateJoined( int compId, 00229 const MAKRti::DtString& federateType, 00230 const MAKRti::DtString& federateName, 00231 unsigned federateHandle, 00232 const MAKRti::DtString& federationName, 00233 unsigned federationHandle, 00234 DtHlaVersionId hlaVersion ); 00235 00237 void processLocalFederateResigned( int compId ); 00238 00240 void processConnectionsUpdate( const DtRtiConnectionAndConfiguration& conns ); 00241 00243 void processConnectionsRemoval( const DtRtiConnectionAndConfiguration& conns ); 00244 00246 void sendAllFederationInfo(); 00247 00250 void pruneStaleFederationsAndObservers(); 00251 00253 void startRtiexec( const DtRtiConnectionInfoDataPair& conn, 00254 const DtRtiConnectionConfigurationInfo& config, 00255 bool requestedRemotely = false ); 00256 00259 void updateFederateWarningTickInterval( float interval ); 00260 00263 void sendObserveFederationsMsg(); 00264 00267 void processRtiexecWebServerChange(int compId); 00268 00269 signals: 00270 00272 void federationAdded(const DtRtiConnectionInfo& conn, 00273 const MAKRti::DtString& federationName); 00274 00276 void federationUpdated(const DtRtiConnectionInfo& conn, 00277 const MAKRti::DtString& federationName); 00278 00280 void federationRemoved(const DtRtiConnectionInfo& conn, 00281 const MAKRti::DtString& federationName); 00282 00284 void federateAdded(const DtRtiConnectionInfo& conn, 00285 const MAKRti::DtString& federationName, 00286 unsigned federateHandle); 00287 00289 void federateUpdated(const DtRtiConnectionInfo& conn, 00290 const MAKRti::DtString& federationName, 00291 unsigned federateHandle); 00292 00294 void federateRemoved(const DtRtiConnectionInfo& conn, 00295 const MAKRti::DtString& federationName, 00296 unsigned federateHandle); 00297 00299 void rtiexecHasNoFederations(const DtRtiConnectionInfo& conn); 00300 00303 void viewedWebSpyInfoUpdated(const MAKRti::DtInetAddr& addr, int port); 00304 00305 protected: 00306 00307 typedef std::map< DtAssistantInfo, bool > DtRemoteObserversMap; 00308 typedef std::map< DtRtiConnectionInfo, DtRemoteObserversMap > DtConnToObserversMap; 00309 typedef std::map< DtRtiConnectionInfo, DtFederationStateByNameMap > DtConnToFederationStateMap; 00310 typedef std::map< DtRtiConnectionInfo, int > DtConnToCompIdMap; 00311 00313 virtual void processRtiexecConnUpdate( const DtRtiConnectionInfoDataPair& rtiexec ); 00314 00316 virtual void processLightweightConnUpdate( const DtRtiConnectionInfoDataPair& conn ); 00317 00319 virtual void processConnectionRemoval( const DtRtiConnectionInfoDataPair& conn ); 00320 00323 virtual bool localFederateInfo(int compId, 00324 const DtAssistantFederateInfo** federate, 00325 DtAssistantFederationInfo** federation); 00326 00327 protected: 00328 00330 DtBoost::shared_ptr<DtAssistantPreferencesInfoMgr> myPrefMgr; 00331 00333 DtBoost::shared_ptr<DtAssistantComponentMgr> myCompMgr; 00334 00336 DtBoost::shared_ptr<DtAssistantConnectionInfoMgr> myConnInfoMgr; 00337 00339 DtConnToFederationStateMap myKnownFederations; 00340 00343 DtConnToCompIdMap myLocalRtiexecConns; 00344 00347 std::set< DtRtiConnectionInfo > myRtiexecsRequestedForRemoteStart; 00348 00351 std::set< DtRtiConnectionInfo > myRtiexecsStartedByRemoteRequest; 00352 00355 DtConnToObserversMap myRemotelyViewedConnections; 00356 00358 DtRtiConnectionInfo myViewedConnection; 00359 00361 MAKRti::DtClock myClock; 00362 00365 unsigned int myTimeStateUpdateInterval; 00366 00368 std::map<std::pair<int, MAKRti::DtTime>, std::map<int, MAKRti::DtString> > myRequestedRtiexecUpdates; 00369 00371 float myWarningTickInterval; 00372 00374 MAKRti::DtTime myLastTickTime; 00375 00377 std::map<int, bool> myFederateSignalTickMessages; 00378 00381 static const int theTimeToWaitForExecInfo; 00382 }; 00383 00384 #endif //! federationsInfoMgr_H_