MAK RTIspy API Documentation for HLA 1.3
forwarderObserverForAssistant.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2008 MaK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 /*******************************************************************************
00006 ** $RCSfile: forwarderObserverForAssistant.h,v $ $Revision: 1.19 $ $State: Exp $
00007 *******************************************************************************/
00008 
00011 
00012 #ifndef forwarderObserverForAssistant_H_
00013 #define forwarderObserverForAssistant_H_
00014 
00015 #include "forwarderObserver.h"
00016 #include <rtiMsConfig.h>
00017 #include <vlutil/vlUtil.h>
00018 #include <vlutil/vlTime.h>
00019 #include <vlutil/vlInetAddr.h>
00020 #include <assistantConnectionInfo.h>
00021 #include <rtiAssistantForwarderClient.h>
00022 #include <RIDparams.h>
00023 #include <map>
00024 #include <vector>
00025 #include <list>
00026 
00027 class DtRtiMsg;
00028 class DtAssistantPrinter;
00029 class DtAssistantNtfyLvlUpdateMsg;
00030 class DtAssistantExitMsg;
00031 class DtAssistantStateObserveMsg;
00032 
00038 class DT_DLL_FORWARDER DtForwarderObserverForAssistant : public DtRtiForwarderObserver
00039 {
00040 
00041 public:
00042    struct DtForwarderObserverConnInfo
00043    {
00044       DtForwarderObserverConnInfo(const MAKRti::DtString& connName,
00045          const MAKRti::DtString& connType,
00046          const MAKRti::DtString& federationName, unsigned int connID,
00047          const DtInetAddrAndPort& connAddr, const MAKRti::DtString& connHost,
00048          unsigned int fedHandle = 0,
00049          DtHlaVersionId hlaVersion = DtHlaVersionUnknown,
00050          int connQueueStatus = 0) :
00051          myConnName(connName), 
00052          myConnType(connType),
00053          myConnPID(0),
00054          myConnProcessName(),
00055          myConnCommandArgs(),
00056          myConnHost(connHost),
00057          myConnID(connID),
00058          myConnAddr(connAddr),
00059          myFedHandle( fedHandle ),
00060          myFederationName( federationName ),
00061          myConnQueueStatus( connQueueStatus ),
00062          myHlaVersion( hlaVersion ) {};
00063 
00064       bool operator<(const DtForwarderObserverConnInfo& other) const
00065       {
00066          return (myConnID < other.myConnID);
00067       }
00068       bool operator==(const DtForwarderObserverConnInfo& other) const
00069       {
00070          return (myConnID == other.myConnID );
00071       }      
00072 
00073       MAKRti::DtString myConnName;
00074       MAKRti::DtString myConnHost;
00075       MAKRti::DtString myConnType;
00076       MAKRti::DtString myConnProcessName;
00077       MAKRti::DtString myConnCommandArgs;
00078       MAKRti::DtString myFederationName;
00079       unsigned int myConnID;
00080       unsigned int myFedHandle;
00081       unsigned int myConnPID;
00082       DtInetAddrAndPort myConnAddr;
00083       int myConnQueueStatus;
00084       DtHlaVersionId myHlaVersion;
00085    };
00086 
00087    struct DtForwarderObserverDroppedConnInfo
00088    {
00089       DtForwarderObserverDroppedConnInfo( const DtString& connName,
00090          const DtString& connType, const DtString& federationName,
00091          unsigned int connID, const DtInetAddrAndPort& connAddr,
00092          const DtString& connHost, DtTime startTime ) :
00093       myInfo( connName, connType, federationName, connID, connAddr, connHost ),
00094       myStartTime( startTime ) {}
00095 
00096       bool operator<(const DtForwarderObserverDroppedConnInfo& other ) const 
00097       {
00098          return ( myInfo.myConnID < other.myInfo.myConnID );
00099       }
00100 
00101       DtForwarderObserverConnInfo myInfo; 
00102       MAKRti::DtTime myStartTime;
00103    };
00104 
00105    DtForwarderObserverForAssistant();
00106    virtual ~DtForwarderObserverForAssistant();
00107 
00109    virtual void initialize( DtRIDParameters* params );
00110 
00112 
00113 
00114    static void tick( void* usr );
00116    virtual void tick();
00118 
00119    virtual void queryForConnectionInfo( int& forwarderPort,
00120       MAKRti::DtInetAddr& forwarderToConnectTo );
00121 
00124    virtual void setForwarderInfo( int forwarderPort,
00125       const MAKRti::DtInetAddr& forwarderToConnectTo );
00126 
00128    virtual void enableNotifications();
00129 
00131    virtual void disableNotifications();
00132    
00134 
00135 
00138    static void processForwarderObserveMsg( const DtAssistantStateObserveMsg& msg, 
00139       void* usr );
00142    virtual void processForwarderObserveMsg( const DtAssistantStateObserveMsg& msg );
00143 
00145    static void processExitCmndMsg( const DtAssistantExitMsg& msg, void* usr );
00147    virtual void processExitCmndMsg( const DtAssistantExitMsg& msg );
00148 
00150    static void processAssistantDisconnect( void* usr );
00152    virtual void processAssistantDisconnect();
00154 
00156    virtual void processLogFileUpdatedEvent( const MAKRti::DtFilename& logFile );
00157 
00159    virtual int clientToForwarderConnectionEstablished( 
00160       const MAKRti::DtString& connName, const MAKRti::DtString& connType,
00161       unsigned int connID, const DtInetAddrAndPort& connAddr );
00162 
00164    virtual int clientToForwarderConnectionLost( 
00165       const MAKRti::DtString& connName, unsigned int connID,
00166       const DtInetAddrAndPort& connAddr );
00167 
00169    virtual void clientToForwarderFederateJoined( 
00170       const DtString& connName, const DtString& connType,
00171       const DtString& federationName, unsigned int connID, 
00172       unsigned int fedHandle, const DtInetAddrAndPort& connAddr,
00173       const MAKRti::DtString& connHost, unsigned int processId,
00174       const MAKRti::DtString& processName, const MAKRti::DtString& commandArgs,
00175       DtHlaVersionId hlaVersion );
00176 
00178    virtual void clientToForwarderFederateLost( 
00179       const MAKRti::DtString& connName, const MAKRti::DtString& connType,
00180       unsigned int connID, unsigned int fedHandle,
00181       const DtInetAddrAndPort& connAddr );
00182 
00184    virtual int forwarderToForwarderExecConnected(
00185       const MAKRti::DtString& connName, unsigned int connID,
00186       const DtInetAddrAndPort& connAddr, const MAKRti::DtString& hostName,
00187       bool fullyCompliant );
00188 
00190    virtual int forwarderToForwarderExecLost(
00191       const MAKRti::DtString& connName, unsigned int connID,
00192       const DtInetAddrAndPort& connAddr );
00193 
00195    virtual int clientToForwarderExecConnected(
00196       const MAKRti::DtString& connName, unsigned int connID,
00197       const DtInetAddrAndPort& connAddr, const MAKRti::DtString& connHost,
00198       bool fullyCompliant );
00199 
00201    virtual int clientToForwarderExecLost(
00202       const MAKRti::DtString& connName, unsigned int connID,
00203       const DtInetAddrAndPort& connAddr );
00204 
00206    virtual void forwarderToForwarderConnectionEstablished( 
00207       const MAKRti::DtString& connName, unsigned int connID,
00208       const DtInetAddrAndPort& connAddr );
00209 
00211    virtual void forwarderToForwarderConnectionLost( 
00212       const MAKRti::DtString& connName, unsigned int connID,
00213       const DtInetAddrAndPort& connAddr );
00214 
00216    virtual int clientToForwarderSocketQueueUpdate( 
00217       unsigned int connId, int connQueueStatus );
00218 
00221    virtual void waitingForFowrarderConnections(
00222       const DtForwarderPort::DtConnAndNameMap& allNeededFws,
00223       const DtForwarderPort::DtConnAndNameMap& stillNeededFws );
00224 
00227    virtual void notWaitingForFowrarderConnections();
00228 
00230    bool gotConnInfoFromAssistant();
00231 
00232    DtBoost::shared_ptr<DtRtiAssistantForwarderClient> assistantClient(){ return myAssistantClient; }
00233 
00234 
00235 protected:
00236 
00238    virtual void addCallbacks();
00239 
00242    virtual void removeCallbacks();
00243 
00246    virtual void sendForwarderInfoToAssistant() const;
00247 
00250    virtual void sendWaitingForForwardersToAssistant() const;
00251 
00252 protected:
00253 
00254 
00255 
00256 
00258    DtBoost::shared_ptr<DtRtiAssistantForwarderClient> myAssistantClient;
00259 
00261    DtAssistantPrinter* myAssistantPrinter;
00262 
00264    bool myForwarderIsObserved;
00265 
00267    DtRIDParameters* myParams;
00268 
00270    MAKRti::DtInetAddr myHostAddr;
00271    
00273    bool myGotConnInfoFromAssistant;
00274    
00275    std::set<DtForwarderObserverConnInfo> myConnectedNotJoinedClientConns;
00276    std::set<DtForwarderObserverConnInfo> myClientForwarderConns;
00277    std::set<DtForwarderObserverConnInfo> myForwarderForwarderConns;
00278    std::set<DtForwarderObserverDroppedConnInfo> myUnexpectedlyDroppedClientConns;
00279 
00282    DtNeededFwConnMap myNeededFws;
00283 
00285    bool myIsWaitingForFws;
00286 
00287    MAKRti::DtClock myClock;
00288    float myDefunctRemovalTime;
00289 
00290    DtForwarderObserverConnInfo* myExecConnection;
00291    bool myExecIsLocal;
00292 
00294 
00295    int myForwarderPort;
00296    MAKRti::DtInetAddr myForwarderToConnectTo;
00298 };
00299 
00300 inline bool DtForwarderObserverForAssistant::gotConnInfoFromAssistant()
00301 {
00302    return myGotConnInfoFromAssistant;
00303 }
00304 
00305 #endif   //! forwarderObserverForAssistant_H_
00306 
00307 

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)