![]() |
MAK RTIspy API Documentation for HLA 1516
|
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