MAK RTIspy API Documentation for HLA 1516
execObserverMgr.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2008 MaK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 /*******************************************************************************
00006 ** $RCSfile: execObserverMgr.h,v $ $Revision: 1.3 $ $State: Exp $
00007 *******************************************************************************/
00008 
00011 
00012 #ifndef DtRtiexecObserverMgr_H_
00013 #define DtRtiexecObserverMgr_H_
00014 
00015 #include "rtiMsConfig.h"
00016 #include "rtiMsg.h"
00017 #include "rtiMsgCbMgr.h"
00018 #include "exec.h"
00019 #include <vlutil/vlSmartPointers.h>
00020 #include <vlutil/vlTime.h>
00021 #include <map>
00022 #include <list>
00023 
00026 class DtRtiExec;
00027 class DtFedExec;
00028 class DtFedExCbInfo;
00029 class DtRtiexecObserver;
00030 class DtFederate;
00031 class DtSyncPt;
00032 class DtTickCallbackInfo;
00033 class DtTickWithExecCallbackInfo;
00034 
00035 class DtMsgCbInfo {
00036 public:
00037    DtMsgCbInfo( DtRtiMsgKind msgKind, DtRtiMsgCbMgr::DtCallbackFcn fcn,
00038       DtRtiexecObserver* observer, bool isMomCallback ) :
00039       myMsgKind( msgKind ), myFcn( fcn ), myObserver( observer ), 
00040       myIsMomCallback( isMomCallback ) {}
00041    ~DtMsgCbInfo() {}
00042 
00043    bool operator<(const DtMsgCbInfo& other) const
00044    {
00045       return ( myMsgKind < other.myMsgKind ||
00046          ( myMsgKind == other.myMsgKind && myFcn < other.myFcn ) ||
00047          ( myMsgKind == other.myMsgKind && myFcn == other.myFcn && myObserver < other.myObserver ) );
00048    }
00049 
00050    DtRtiMsgKind myMsgKind; 
00051    DtRtiMsgCbMgr::DtCallbackFcn myFcn;
00052    DtRtiexecObserver* myObserver;
00053    bool myIsMomCallback;
00054 };
00055 
00058 class DT_DLL_EXEC DtRtiexecObserverMgr
00059 {
00060 
00061 public:
00062 
00064    DtRtiexecObserverMgr();
00065 
00067    virtual ~DtRtiexecObserverMgr();
00068 
00070    virtual void setExec( DtBoost::shared_ptr<DtRtiExec> exec );
00071 
00073    virtual void addObserver( DtBoost::shared_ptr<DtRtiexecObserver> observer );
00074 
00076    virtual void removeObserver( DtBoost::shared_ptr<DtRtiexecObserver> observer );
00077 
00079    virtual void removeAllObservers();
00080 
00082    virtual void addRtiMsgCallback( DtRtiMsgKind msgKind, 
00083       DtRtiMsgCbMgr::DtCallbackFcn fcn, DtRtiexecObserver* observer,
00084       bool isMomCallback );
00085 
00087    virtual void removeRtiMsgCallback( DtRtiMsgKind msgKind, 
00088       DtRtiMsgCbMgr::DtCallbackFcn fcn, DtRtiexecObserver* observer,
00089       bool isMomCallback );
00090 
00093    virtual void addTickCallback( DtTickCbFn fcn, DtRtiexecObserver* observer, 
00094       DtTime interval );
00095 
00097    virtual void removeTickCallback( DtTickCbFn fcn, DtRtiexecObserver* observer );
00098 
00101    virtual void addTickCallback( DtTickWithExecCbFn fcn, DtRtiexecObserver* observer,
00102       DtTime interval );
00103 
00105    virtual void removeTickCallback( DtTickWithExecCbFn fcn, DtRtiexecObserver* observer );
00106 
00108    static void federationCreatedCallback( DtFedExec* exec, void* usr );
00109    void federationCreatedCallback( DtFedExec* exec );
00110 
00112    static void federationDestroyedCallback( DtFedExec* exec, void* usr );
00113    void federationDestroyedCallback( DtFedExec* exec );
00114 
00116    static void federateJoinedCallback( DtFederate* federate, void* usr );
00117    void federateJoinedCallback( DtFedExec* exec, DtFederate* federate );
00118 
00120    static void federateResignedCallback( DtFederate* federate, void* usr );
00121    void federateResignedCallback( DtFedExec* exec, DtFederate* federate );
00122 
00124    static void syncPtRegisteredCallback( DtSyncPt* pt, void* usr );
00125    void syncPtRegisteredCallback( DtFedExec* exec, DtSyncPt* pt );
00126 
00128    static void federationSynchronizedCallback( DtSyncPt* pt, void* usr );
00129    void federationSynchronizedCallback( DtFedExec* exec, DtSyncPt* pt );
00130 
00132    static void syncPtAchievedCallback( DtFederate* fed, DtSyncPt* pt, void* usr );
00133    void syncPtAchievedCallback( DtFedExec* exec, DtFederate* fed, DtSyncPt* pt );
00134 
00136    static void federateDisconnectedCallback( DtFederate* fed, void* usr );
00137    void federateDisconnectedCallback( DtFedExec* exec, DtFederate* fed );
00138 
00140    static void federateReconnectSucceededCallback( DtFederate* fed, void* usr );
00141    void federateReconnectSucceededCallback( DtFedExec* exec, DtFederate* fed);
00142 
00144    static void federateReconnectFailedCallback( DtFederate* fed, void* usr );
00145    void federateReconnectFailedCallback( DtFedExec* exec, DtFederate* fed);
00146 
00148    static void updateLogFileNameCallback( const DtFilename& logFile, void* usr );
00149    void updateLogFileNameCallback( const DtFilename& logFile );
00150 
00152    static void updateWebServerCallback( const DtInetAddr& webSpyIpAddr, int webSpyPort, void* usr );
00153    void updateWebServerCallback( const DtInetAddr& webSpyIpAddr, int webSpyPort );
00154 
00156    virtual unsigned long connectionId() const;
00157 
00158 protected:
00159    
00161    DtRtiexecObserverMgr( const DtRtiexecObserverMgr& orig );
00162 
00164    DtRtiexecObserverMgr& operator=( const DtRtiexecObserverMgr& orig );
00165 
00166 protected:
00167 
00168    typedef std::map<DtFedExec*, DtFedExCbInfo*> DtFedexToCbInfoMap;
00169    typedef std::set<DtMsgCbInfo> DtMsgCbSet;
00170    typedef std::set<DtTickCallbackInfo> DtTickCbSet;
00171    typedef std::set<DtTickWithExecCallbackInfo> DtTickWithExecCbSet;
00172    typedef std::list< DtBoost::shared_ptr<DtRtiexecObserver> > DtExecObsList;
00173 
00175    DtBoost::shared_ptr<DtRtiExec> myExec;
00176 
00178    DtExecObsList myObservers;
00179 
00181    DtMsgCbSet myMsgCbSet;
00182 
00184    DtTickCbSet myTickCbSet;
00185 
00187    DtTickWithExecCbSet myTickWithExecCbSet;
00188 
00190    DtFedexToCbInfoMap myFedexInfoMap;
00191 };
00192 
00193 
00194 #endif //! DtRtiexecObserverMgr_H_
00195 
00196 

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)