![]() |
MAK RTIspy API Documentation for HLA Evolved
|
00001 /********************************************************************* 00002 ** Copyright (c) 2008 MaK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: rtiAssistantClient.h,v $ $Revision: 1.38 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00009 #ifndef rtiAssistantClient_H_ 00010 #define rtiAssistantClient_H_ 00011 00015 00016 #include <vlutil/vlPrint.h> 00017 #include <vlutil/vlMutex.h> 00018 #include <vlutil/vlInetAddr.h> 00019 #include <rtiMsConfig.h> 00020 00021 #include "assistantConnectionInfo.h" 00022 #include "assistantMsgCbMgr.h" 00023 #include "assistantDefaultMsgFact.h" 00024 00026 typedef void (*DtAssistantDisconnectCb)(void* usr); 00027 00028 class DtAssistantNtfyLvlUpdateMsg; 00029 class DtAssistantLatencyReportMsg; 00030 class DtAssistantTestMgrStatusMsg; 00031 class DtAssistantExitMsg; 00032 class DtAssistantSignalTickedMsg; 00033 class DtAssistantDisconnectCbInfo; 00034 class DtTcpMsgSocket; 00035 00036 enum DtAssistantComponentType 00037 { 00038 DtAssistantNoComponentType, 00039 DtAssistantLrcComponent, 00040 DtAssistantForwarderComponent, 00041 DtAssistantRtiexecComponent, 00042 DtAssistantShmExecComponent, 00043 DtAssistantWwwComponent, 00044 DtAssistantToAssistantComponent 00045 00046 }; 00047 00048 enum DtAssistantConnectionStatus 00049 { 00050 DtAssistantConnected, 00051 DtAssistantConnectFailed, 00052 DtAssistantNoResponse, 00053 DtAssistantConnectRejected, 00054 DtAssistantWrongDisplay 00055 }; 00056 00057 00064 class DT_DLL_ASSISTANT DtRtiAssistantClient 00065 { 00066 public: 00067 00069 DtRtiAssistantClient( DtAssistantComponentType type, int port = DtASSISTANT_DEFAULT_PORT ); 00070 00072 virtual ~DtRtiAssistantClient(); 00073 00074 private: 00075 00077 DtRtiAssistantClient( DtRtiAssistantClient const&); 00078 00080 DtRtiAssistantClient& operator=(DtRtiAssistantClient const&); 00081 00082 public: 00083 00086 virtual bool tick( unsigned int timeout = 0 ); 00087 00089 virtual bool isConnected(); 00090 00092 virtual bool isDisabled(); 00093 00096 virtual void addMsgCallback(DtAssistantMsgKind msgKind, DtAssistantMsgCbMgr::DtCallbackFcn fcn, 00097 void *usr ); 00098 virtual void removeMsgCallback(DtAssistantMsgKind msgKind, DtAssistantMsgCbMgr::DtCallbackFcn fcn, 00099 void *usr ); 00100 virtual void addWildcardMsgCallback(DtAssistantMsgCbMgr::DtCallbackFcn fcn, 00101 void *usr ); 00102 virtual void removeWildcardMsgCallback(DtAssistantMsgCbMgr::DtCallbackFcn fcn, 00103 void *usr ); 00104 00106 virtual void addDisconnectCallback(DtAssistantDisconnectCb cb, void* usr); 00107 virtual void removeDisconnectCallback(DtAssistantDisconnectCb cb, void* usr); 00108 00110 virtual bool sendLRCConnQueryMsg( bool error, MAKRti::DtInetAddr& relIpAddr, 00111 MAKRti::DtInetAddr& beIpAddr, MAKRti::DtInetAddr& interfaceAddr, 00112 int& udpPort, int& tcpPort, bool& useRtiexec, bool& forceFullCompliance, 00113 int& forwarderPort ); 00114 00116 virtual bool sendForwardingComponentConnQueryMsg( bool error, 00117 MAKRti::DtInetAddr& relIpAddr, MAKRti::DtInetAddr& beIpAddr, 00118 MAKRti::DtInetAddr& interfaceAddr, int& udpPort, int& tcpPort, 00119 bool& forceFullCompliance, int& forwarderPort, 00120 MAKRti::DtInetAddr& forwardrToConnectTo ); 00121 00123 virtual void sendLatencyTestMsg( const DtAssistantLatencyReportMsg& msg ); 00124 00126 virtual void sendLatencyTestStatusMsg( const DtAssistantTestMgrStatusMsg& msg ); 00127 00130 virtual bool getNewLicenseServerFromAssistant( bool allowUnlicensed, 00131 bool& runUnlicensed, MAKRti::DtString& serverName, const MAKRti::DtString& featToCheck ); 00132 00135 virtual void sendNotifyMsg( const MAKRti::DtString& text, DtNotifyLevelType notifyLevel ); 00136 00138 virtual void sendSignalTickedMsg(); 00139 00141 virtual void sendDialogBoxMsg( const MAKRti::DtString& text, 00142 const MAKRti::DtString& advancedText ); 00143 00146 virtual void sendClose(); 00147 00149 virtual void setMsgFactory(DtAssistantMessageFactory* fact); 00150 virtual DtAssistantMessageFactory* msgFactory() const; 00151 00154 virtual void shutDownConnection(); 00155 00157 virtual MAKRti::DtString getProcessName() const; 00158 00160 virtual int getPID() const; 00161 00163 virtual MAKRti::DtString getCommandArgs() const; 00164 00166 bool testConnectionStatus(); 00167 00168 protected: 00169 00172 virtual bool initialize(); 00173 00176 virtual DtAssistantConnectionStatus connectToAssistant(); 00177 00178 virtual DtAssistantConnectionStatus makeSingleConnectionAttempt(); 00179 00181 virtual bool startAssistant(); 00182 00184 virtual bool readAndProcess( MAKRti::DtTime maxTime ); 00185 00188 virtual bool sendMsg( const DtAssistantMsg& msg ); 00189 00196 virtual DtAssistantMsg* sendMsgAndWait( const DtAssistantMsg& msg, 00197 DtAssistantMsgKind respKind, unsigned int waitSecs = 0 ); 00198 00201 virtual DtAssistantConnectionStatus sendConnectMsg(); 00202 00204 static void processRespMsg(const DtAssistantMsg& respMsg, void* usr); 00205 virtual void processRespMsg(const DtAssistantMsg& respMsg); 00206 00208 static void processNtfyLvlUpdateMsg(const DtAssistantNtfyLvlUpdateMsg& updateMsg, void* usr); 00209 virtual void processNtfyLvlUpdateMsg(const DtAssistantNtfyLvlUpdateMsg& updateMsg); 00210 00212 static void processAssistantExitMsg( const DtAssistantExitMsg& inter, void* usr); 00213 virtual void processAssistantExitMsg( const DtAssistantExitMsg& inter); 00214 00216 virtual void processDisconnect(); 00217 00219 virtual std::auto_ptr<DtAssistantMsg> netRead( int *retCode) const; 00220 00222 virtual bool sendLicQueryMsg( bool allowUnlicensed, bool& runUnlicensed, 00223 MAKRti::DtString& licServer ); 00224 00227 virtual void sendClientInfo(); 00228 00229 00230 protected: 00231 00233 bool myAssistantDisabled; 00234 00236 MAKRti::DtInetAddr myAssistantAddr; 00237 00239 unsigned int myAssistantPort; 00240 00242 DtTcpMsgSocket* mySocket; 00243 00246 bool myCreateIfConnectFails; 00247 00249 DtAssistantConnectionStatus myConnStatus; 00250 00252 bool myInitializingConnection; 00253 00255 MAKRti::DtU32 mySockOpts; 00256 00258 DtAssistantMessageFactory* myMessageFactory; 00259 00261 DtAssistantDfltMsgFactory myDefaultMessageFactory; 00262 00264 DtAssistantComponentType myComponentType; 00265 00267 MAKRti::DtClock myClock; 00268 00270 MAKRti::DtTime myConnTestInterval; 00271 00273 MAKRti::DtTime myTimeToTestConnection; 00274 00276 DtAssistantMsgCbMgr myMsgCbMgr; 00277 00279 std::auto_ptr<DtAssistantMsg> myRespMsg; 00280 00282 std::list<DtAssistantDisconnectCbInfo*> myDisconnectCallbacks; 00283 00285 MAKRti::DtMutex* mySocketMutex; 00286 00288 bool myShouldShutdown; 00289 00292 static const int theMaxNumberOfAssistantConnectAttempts; 00293 00295 int myNumFailedAssistantConnects; 00296 00298 int myNumSuccessfulAssistantConnects; 00299 00301 static const MAKRti::DtInetAddr theFirstHostInetAddr; 00302 00304 int myPID; 00305 00307 MAKRti::DtString myProcessName; 00308 00310 MAKRti::DtString myCommandArgs; 00311 00312 }; 00313 00314 #endif