MAK RTIspy API Documentation for HLA 1516
rtiExecWebManager.h
Go to the documentation of this file.
00001 /*********************************************************************
00002  ** Copyright (c) 2006 MaK Technologies, Inc.
00003  ** All rights reserved.
00004  *********************************************************************/
00005 /*******************************************************************************
00006  ** $RCSfile: rtiExecWebManager.h,v $ $Revision: 1.8 $ $State: Exp $
00007  *******************************************************************************/
00010 
00011 #ifndef DtRtiExecWebManager_H_
00012 #define DtRtiExecWebManager_H_
00013 
00014 #include "rtiMsConfig.h"
00015 #include <wwwSpyAdapter.h>
00016 #include <spyXmlDocument.h>
00017 #include <syncPointXmlBlock.h>
00018 #include <federationListXmlBlock.h>
00019 #include <federationStateXmlBlock.h>
00020 #include <federateStateXmlBlock.h>
00021 #include <rtiMsg.h>
00022 #include <vlThreadedObject.h>
00023 #include <list>
00024 #include <map>
00025 
00026 class DtRtiexecObserverForWebService;
00027 class DtWwwControlMsg;
00028 
00032 class DT_DLL_EXEC DtRtiExecWebManager
00033 {
00034 public:
00035 
00036    DtRtiExecWebManager( DtRtiexecObserverForWebService& parent, 
00037       unsigned long connId );
00038    virtual ~DtRtiExecWebManager();
00039 
00041    virtual bool tickOnce();
00042 
00044    inline const DtString& toXml() const;
00045 
00047    virtual DtFederationStateXmlBlockSP addFederation( const DtString& federationName,
00048       unsigned long federationHandle, const DtString& fedFileName );
00049    virtual DtFederationStateXmlBlockSP removeFederation( unsigned long federationHandle );
00050 
00052    virtual DtFederateStateXmlBlockSP addFederate( unsigned long connId, unsigned long federationHandle,
00053       const DtString& federateName, unsigned long federateHandle, const DtString& host,
00054       const DtString& webServerHost, int webServerPort ); 
00055    virtual DtFederateStateXmlBlockSP removeFederate( unsigned long federationHandle,
00056       unsigned long federateHandle );
00057    
00059    virtual DtTimeStateXmlBlockSP setFederateTimeState( unsigned long federationHandle,
00060       unsigned long federateHandle, bool regulating, bool constrained, const DtString& lbts,
00061       const DtString& lookahead, const DtString& curTime );
00062 
00064    virtual DtSyncPointXmlBlockSP addSyncPoint( unsigned long federationHandle, const DtString& syncPointName );
00065    virtual DtSyncPointXmlBlockSP removeSyncPoint( unsigned long federationHandle, const DtString& syncPointName );
00066 
00068    virtual DtSyncPointFederateXmlBlockSP addFederateToSyncPoint( unsigned long federationHandle, const DtString& syncPointName, unsigned long federateHandle );
00069    
00071    virtual void syncPointAchieved( unsigned long federationHandle, const DtString& syncPointName, unsigned long federateHandle );
00072 
00074    virtual void processFederateStateUpdateMsg( unsigned long connId, unsigned long federationHandle,
00075       unsigned long federateHandle, unsigned long stateType, const DtRtiMsg& federateStateMsg );
00076 
00078    virtual void processWwwControlRspMsg( unsigned long connId, unsigned long federationHandle,
00079       unsigned long federateHandle, unsigned long commandId, const DtRtiMsg& commandMsg );
00080 
00082    virtual void processNetworkMapRspMsg( DtSpyXmlDocumentSP netMap );
00083    
00085    inline DtRtiexecObserverForWebService& parent();
00086 
00088    inline DtWwwSpyAdapter& webServer();
00089 
00090 protected:
00091 
00092    typedef void ( DtRtiExecWebManager::*MessageHandlerFn)( const DtRtiMsg* );
00093    typedef std::list< MessageHandlerFn > MessageHandlerList;
00094    typedef std::map< DtRtiMsgKind, MessageHandlerList > MessageHandlersByKind;
00095 
00096    typedef std::map< unsigned long, DtFederateStateXmlBlockSP > HandleToFederateMap;
00097    typedef std::pair< DtFederationStateXmlBlockSP, HandleToFederateMap > FederationAndFederatesPair;
00098    typedef std::map< unsigned long, FederationAndFederatesPair > HandleToFederationMap;
00099 
00100    typedef std::map< DtString, DtSyncPointXmlBlockSP > NameToSyncPointMap;
00101    typedef std::map< unsigned long, NameToSyncPointMap> FederationHandleToSyncPointsMap;
00102 
00103 protected:
00104    
00106    virtual void refreshFederationStatePage();
00107 
00109    void refreshNetworkMapPage();
00110 
00111 
00113    virtual void registerMsgHandler( DtRtiMsgKind kind, MessageHandlerFn func );
00114    virtual void unRegisterMsgHandler( DtRtiMsgKind kind, MessageHandlerFn func );
00115 
00117    virtual const MessageHandlerList& messageHandlersForKind( DtRtiMsgKind kind );
00118    
00120 
00122    virtual void controlMsgHandler( const DtRtiMsg* msg );
00123 
00125    virtual void stateReqHandler( const DtRtiMsg* msg );
00126 
00128    virtual void federateStateReqHandler( const DtRtiMsg* msg );
00129 
00130 
00132 
00134    virtual void issueStateRequest( const DtWwwControlMsg* cntlMsg );
00135 
00137    virtual void issueLrcLogRequest( const DtWwwControlMsg* cntlMsg );
00138 
00140    virtual void issueDestroyFederationCommand( const DtWwwControlMsg* cntlMsg );
00141 
00143    virtual void issueDeleteFederateCommand( const DtWwwControlMsg* cntlMsg );
00144 
00146    void issueChangeRidParamsCommand( const DtWwwControlMsg* cntlMsg );
00147 
00149    void issueUndiscoverObjectCommand( const DtWwwControlMsg* cntlMsg );
00150 protected:
00151 
00153    DtRtiexecObserverForWebService& myParent;
00154    unsigned long myConnId;
00155 
00157    DtWwwSpyAdapterSP myWebAdapter;
00158 
00160    DtSpyXmlDocument myXmlStateRepository;
00161    DtFederationListXmlBlockSP myFederationList;
00162 
00166    DtSpyXmlDocumentSP myXmlNetworkMapStateRepository;
00167 
00168 
00169    HandleToFederationMap myFederations;
00170    FederationHandleToSyncPointsMap mySyncPoints;
00171 
00173    MessageHandlersByKind myMessageHandlers;   
00174    
00175 };
00176 
00177 const DtString& DtRtiExecWebManager::toXml() const
00178 {
00179    return myXmlStateRepository.toString();
00180 }
00181 
00182 
00183 inline DtRtiexecObserverForWebService& DtRtiExecWebManager::parent()
00184 {
00185    return myParent;
00186 }
00187 
00188 inline DtWwwSpyAdapter& DtRtiExecWebManager::webServer()
00189 {
00190    return *myWebAdapter;
00191 }
00192 
00193 
00194 #endif //! DtRtiExecWebManager_H_
00195 

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)