MAK RTIspy API Documentation for HLA Evolved
rtiAssistantClient.h
Go to the documentation of this file.
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

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)