MAK RTIspy API Documentation for HLA 1.3
connInfoMgr.h
Go to the documentation of this file.
00001 /*********************************************************************
00002 ** Copyright (c) 2009 MaK Technologies, Inc.
00003 ** All rights reserved.
00004 *********************************************************************/
00005 /*********************************************************************
00006 ** $RCSfile: connInfoMgr.h,v $ $Revision: 1.19 $ $State: Exp $
00007 *********************************************************************/
00008 
00009 #ifndef connInfoMgr_H_
00010 #define connInfoMgr_H_
00011 
00014 
00015 #include "rtiMsConfig.h"
00016 #include "assistantMgr.h"
00017 #include "assistantLicServerInfo.h"
00018 #include "assistantMsgQueue.h"
00019 #include "connectionsCache.h"
00020 #include "rtiAssistantClient.h"
00021 #include "connectionAndConfiguration.h"
00022 
00023 class DtRtiAssistantServer;
00024 class DtRtiAssistantPeer;
00025 class DtAssistantComponentMgr;
00026 class DtAssistantPreferencesInfoMgr;
00027 class DtAssistantQueryMsg;
00028 class DtAssistantLightweightInfoMsg;
00029 class DtAssistantInfoMsg;
00030 class DtAssistantRemovalMsg;
00031 class DtAssistantStartRtiexecMsg;
00032 
00036 class DT_DLL_ASSISTANTAPP DtAssistantConnectionInfoMgr : public DtAssistantMgr
00037 {
00038    Q_OBJECT
00039 
00040 public:
00041 
00043    DtAssistantConnectionInfoMgr( DtBoost::shared_ptr<DtRtiAssistantServer> server,
00044       DtBoost::shared_ptr<DtRtiAssistantPeer> peer,
00045       DtBoost::shared_ptr<DtAssistantPreferencesInfoMgr> prefMgr,
00046       DtBoost::shared_ptr<DtAssistantComponentMgr> compMgr,
00047       const MAKRti::DtFilename& configDir,
00048       const MAKRti::DtString& logFileName);
00049 
00051    virtual ~DtAssistantConnectionInfoMgr();
00052 
00053 private:
00054 
00056    DtAssistantConnectionInfoMgr(DtAssistantConnectionInfoMgr const& );
00057 
00059    DtAssistantConnectionInfoMgr& operator= (DtAssistantConnectionInfoMgr const& );
00060 
00061 public:
00062 
00064    virtual void tick();
00065 
00067    virtual void startShutdown();
00068 
00070    virtual bool isCacheFileVersionOld() const;
00071 
00073    virtual unsigned int lightweightMemoryPeriod() const;
00074 
00076    virtual unsigned int lightweightHeartbeatInterval() const;
00077 
00079    virtual unsigned int assistantMemoryPeriod() const;
00080 
00083    virtual unsigned int assistantHeartbeatInterval() const;
00084 
00087    virtual unsigned int requestedAssistantHeartbeatInterval() const;
00088 
00090    virtual bool acceptRemoteCommands() const;
00091 
00093    virtual bool remoteAssistantAcceptsCommands( const DtAssistantInfo& assistant ) const;
00094 
00097    virtual bool hostHasARemoteAssistantThatAcceptsCommands(
00098       const DtHostNameAddress& host, const MAKRti::DtInetAddr& interfaceAddr ) const;
00099 
00102    virtual int localRtiexecCompId( const DtRtiConnectionInfo& conn ) const;
00103 
00105    //1 or returns -1 if not found.
00106    virtual int localRtiForwarderCompId( const DtRtiConnectionInfo& conn ) const;
00107 
00110    virtual bool getRemoteRtiexecLocation( const DtRtiConnectionInfo& conn, 
00111       DtAssistantInfo& assistant, int& id ) const;
00112 
00115    virtual bool getRemoteRtiForwarderLocation( const DtRtiConnectionInfo& conn, 
00116       DtAssistantInfo& assistant, int& id ) const;
00117 
00120    virtual bool getRemoteRtiexecConnInfo( const DtAssistantInfo& assistant,
00121       int id, DtRtiConnectionInfoDataPair& conn ) const;
00122 
00125    virtual bool getRemoteForwarderConnInfo( const DtAssistantInfo& assistant,
00126       int id, DtRtiConnectionInfoDataPair& conn ) const;
00127 
00130    virtual bool getChosenConnectionAndConfiguration( DtRtiConnectionInfoDataPair& conn,
00131       DtRtiConfigurationInfoDataPair& config );
00132 
00135    virtual bool getConnectionInfo( DtRtiConnectionInfoDataPair& conn );
00136 
00140    virtual bool getConfigurationForConn( const DtRtiConnectionInfo& conn,
00141       DtRtiConfigurationInfoDataPair& config );
00142 
00144    virtual MAKRti::DtString connectionName( const DtRtiConnectionInfo& conn );
00145    
00149    virtual bool isStillDefaultChosen() const;
00150 
00152    virtual const DtRtiConnectionAndConfiguration& connectionsAndConfigurations();
00153 
00155    virtual void addUserDefinedConnections( const DtRtiConnectionAndConfiguration& conns );
00156 
00158    virtual void removeUserDeletedConnections( const DtRtiConnectionAndConfiguration& conns );
00159 
00161    virtual void removeAllLocalRtiexecsForwarders();
00162 
00164    virtual void removeAllLocalLightweightConns();
00165 
00169    virtual bool isConnConflicting( const DtRtiConnectionInfo& conn,
00170       MAKRti::DtString& reason ) const;
00171 
00173    void saveConnections();
00174 
00175 protected:
00176 
00179 
00180 
00181    static void processQueryMsg(const DtAssistantQueryMsg& queryMsg, void* usr);
00182    virtual void processQueryMsg(const DtAssistantQueryMsg& queryMsg);
00183 
00185    static void processInfoMsg(const DtAssistantInfoMsg& infoMsg, void* usr);
00186    virtual void processInfoMsg(const DtAssistantInfoMsg& infoMsg);
00187 
00189    static void processLightweightInfoMsg(const DtAssistantLightweightInfoMsg& infoMsg, void* usr);
00190    virtual void processLightweightInfoMsg(const DtAssistantLightweightInfoMsg& infoMsg);
00191 
00193    static void processRemovalMsg(const DtAssistantRemovalMsg& remMsg, void* usr);
00194    virtual void processRemovalMsg(const DtAssistantRemovalMsg& remMsg);
00195 
00197    static void processStartRtiexecMsg( const DtAssistantStartRtiexecMsg& msg, void* usr);
00198    virtual void processStartRtiexecMsg( const DtAssistantStartRtiexecMsg& msg );
00199 
00201 
00203    static void processInterfaceFound( void* usr );
00204 
00207    virtual void processInterfaceFound();
00208 
00209    struct DtAssistantState
00210    {
00211       DtAssistantState() : heartbeated( true ), lightweightInactivePeriod(120),
00212          assistantInactivePeriod(10), acceptsRemoteCommands(true) {}
00213       bool heartbeated;
00214       unsigned int lightweightInactivePeriod;
00215       unsigned int assistantInactivePeriod;
00216       bool acceptsRemoteCommands;
00217       std::map<int, DtRtiConnectionInfo> rtiexecs;
00218       std::map<int, DtRtiConnectionInfo> forwarders;
00219    };
00220    typedef std::map< DtAssistantInfo, DtAssistantState > DtAssistantStateMap;
00221    typedef std::pair< DtAssistantInfo, DtAssistantState > DtAssistantStatePair;
00222 
00223 
00224 signals:
00225 
00228    void heartbeat();
00229 
00232    void prune();
00233 
00235    void connectionsAddedOrUpdated( const DtRtiConnectionAndConfiguration& conns );
00236 
00238    void connectionsAboutToBeRemoved( const DtRtiConnectionAndConfiguration& conns );
00239 
00241    void connectionsRemoved( const DtRtiConnectionAndConfiguration& conns );
00242 
00244    void assistantFound( const DtAssistantInfo& info );
00245 
00247    void assistantLost( const DtAssistantInfo& info );
00248 
00250    void rtiexecStartupRequested( const DtRtiConnectionInfoDataPair&,
00251       const DtRtiConnectionConfigurationInfo&, bool );
00252 
00253 public slots:
00254 
00256    void processLocalRtiComponentConnected( int compId );
00257 
00259    void processLocalRtiComponentNotConnected( int compId );
00260 
00262    void processLocalForwarderHasRtiexec( int compId );
00263 
00265    void processLocalForwarderHasNoRtiexec( int compId );
00266 
00268    void processNewChosenConnection( const DtRtiConnectionInfo& conn,
00269       const DtRtiConnectionConfigurationInfo& config );
00270 
00272    void processClearChosenConnection();
00273 
00275    void setLightweightMemory( unsigned int newVal );
00276 
00278    void setAssistantUpdateInterval( unsigned int newVal );
00279 
00281    void setAcceptRemoteCommands( bool newVal );
00282 
00283 protected:
00284 
00286    virtual void heartbeatAssistant();
00287 
00289    virtual void heartbeatLightweightConnections();
00290 
00293    virtual void pruneStaleLightweightConns();
00294 
00297    virtual void pruneStaleAssistantsExecsFwrdrs();
00298 
00302    virtual void determineHeartbeatIntervals();
00303 
00306    virtual DtAssistantStateMap::iterator findOrAddRemoteAssistant( const DtAssistantInfo& assistant );
00307 
00311    virtual void unverifyRtiexecsForwardersForAssistant( DtAssistantStateMap::iterator astntIter, 
00312       DtRtiConnectionAndConfiguration& connsToRemove,
00313       DtRtiConnectionAndConfiguration& updatedConns );
00314 
00319    virtual void unverifyListedRtiexecsForwardersForAssistant(
00320       const DtRtiConnectionAndConfiguration& removeList, 
00321       DtAssistantStateMap::iterator astntIter,
00322       DtRtiConnectionAndConfiguration& connsToRemove, 
00323       DtRtiConnectionAndConfiguration& updatedConns );
00324 
00329    virtual void addListedRtiexecsForwardersForAssistant(
00330       const DtRtiConnectionAndConfiguration& addList, 
00331       DtAssistantStateMap::iterator astntIter,
00332       DtRtiConnectionAndConfiguration& connsToRemove,
00333       DtRtiConnectionAndConfiguration& updatedConns );
00334 
00337    virtual void checkForConflictingConns(
00338       DtRtiConnectionAndConfiguration& updatedConns );
00339 
00342    virtual void removeConnections(
00343       const DtRtiConnectionAndConfiguration& connsToRemove );
00344 
00347    virtual void setInterfaceForPredefinedConns( const MAKRti::DtInetAddr& interfaceAddr );
00348 
00349 protected:
00350 
00352    DtBoost::shared_ptr<DtConnectionCache> myConnectionCache;
00353 
00355    DtBoost::shared_ptr<DtAssistantComponentMgr> myCompMgr;
00356 
00358    DtBoost::shared_ptr<DtAssistantPreferencesInfoMgr> myPrefMgr;
00359 
00361    bool myAcceptRemoteCmds;
00362 
00364    DtClock myClock;
00365 
00368    DtTime myNextAssistantHeartbeatTime;
00369 
00372    DtTime myNextLightweightHeartbeatTime;
00373 
00376    DtTime myNextAssistantInfoRemovalTime;
00377 
00380    DtTime myNextLightweightRemovalTime;
00381 
00383    unsigned int myAssistantHeartbeatInterval;
00384 
00386    unsigned int myLightweightHeartbeatInterval;
00387 
00390    unsigned int myAssistantInfoRemovalPeriod;
00391 
00394    unsigned int myLightweightRemovalPeriod;
00395 
00397    MAKRti::DtString myHostName;
00398 
00400    DtRtiConnectionAndConfiguration myRemovedLocalExecsAndFwrdrs;
00401 
00403    DtAssistantStateMap myRemoteAssistantStates;
00404 
00406    DtRtiConnectionAndConfiguration myConnsAndConfigs;
00407 
00411    bool myStillDefaultChosen;
00412 
00415    bool myPredefinedConnsNeedInterface;
00416 
00419    MAKRti::DtInetAddr myPotentialPredefinedConnsInterface;
00420 
00423    DtTime mySetPredefinedConnsInterfaceTime;
00424 
00426    MAKRti::DtString myLogFileName;
00427 };
00428 
00429 #endif

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)