MAK RTIspy API Documentation for HLA 1516
federationsInfoMgr.h
Go to the documentation of this file.
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_

Document ID: Generated on Thu Jun 14 14:15:04 EDT 2012 from SVN revision 116116
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)