MAK RTIspy API Documentation for HLA 1.3
rtiAssistantServer.h
Go to the documentation of this file.
00001 /*********************************************************************
00002  ** Copyright (c) 2008 MaK Technologies, Inc.
00003  ** All rights reserved.
00004  *********************************************************************/
00005 /*******************************************************************************
00006  ** $RCSfile: rtiAssistantServer.h,v $ $Revision: 1.48 $ $State: Exp $
00007  *******************************************************************************/
00008 
00009 #ifndef rtiAssistantServer_H_
00010 #define rtiAssistantServer_H_
00011 
00015 
00016 #include <rtiMsConfig.h>
00017 
00018 #include <map>
00019 
00020 #include <vlutil/vlBaseMsg.h>
00021 #include <vlutil/vlUtil.h>
00022 #include <vlutil/vlTime.h>
00023 #include <vlutil/vlPrint.h>
00024 
00025 #include "assistantDefaultMsgFact.h"
00026 #include "assistantMsgCbMgr.h"
00027 #include "assistantConnectionInfo.h"
00028 #include "assistantConnectionConfigurationInfo.h"
00029 
00031 typedef void (*DtAssistantSocketAdditionCb)(int compId, void* usr);
00032 typedef void (*DtAssistantSocketRemovalCb)(int compId, const MAKRti::DtString& reason, void* usr);
00033 class DtAssistantSocketAdditionCbInfo;
00034 class DtAssistantSocketRemovalCbInfo;
00035 typedef std::list<DtAssistantSocketAdditionCbInfo*> DtAssistantSocketAdditionCallbackList;
00036 typedef std::list<DtAssistantSocketRemovalCbInfo*> DtAssistantSocketRemovalCallbackList;
00037 
00038 class DtTcpMsgSocketMgr;
00039 class DtTcpMsgSocket;
00040 
00047 class DT_DLL_ASSISTANT DtRtiAssistantServer
00048 {
00049 
00050 public:
00052    DtRtiAssistantServer( DtNotifyLevelType level , 
00053       int port = DtASSISTANT_DEFAULT_PORT, 
00054       const MAKRti::DtInetAddr& networkInterface = MAKRti::DtInetAddr() );
00055 
00057    virtual ~DtRtiAssistantServer();
00058 
00059 public:
00060 
00062    bool isOk() const;
00063 
00066    virtual void addMsgCallback(DtAssistantMsgKind msgKind, DtAssistantMsgCbMgr::DtCallbackFcn fcn,
00067       void *usr );
00068    virtual void removeMsgCallback(DtAssistantMsgKind msgKind, DtAssistantMsgCbMgr::DtCallbackFcn fcn,
00069       void *usr );
00070    virtual void addWildcardMsgCallback(DtAssistantMsgCbMgr::DtCallbackFcn fcn,
00071       void *usr );
00072    virtual void removeWildcardMsgCallback(DtAssistantMsgCbMgr::DtCallbackFcn fcn,
00073       void *usr );
00074 
00077    virtual void addSocketAdditionCallback(DtAssistantSocketAdditionCb cb, void* usr);
00078    virtual void removeSocketAdditionCallback(DtAssistantSocketAdditionCb cb, void* usr);
00079    virtual void addSocketRemovalCallback(DtAssistantSocketRemovalCb cb, void* usr);
00080    virtual void removeSocketRemovalCallback(DtAssistantSocketRemovalCb cb, void* usr);
00081 
00084    virtual bool tick( unsigned int timeout = 0 );
00085 
00087    virtual unsigned int numConnections() const;
00088 
00090    virtual void sendMsgOnConn( int compId, const DtAssistantMsg& msg );
00091 
00093    virtual void sendBroadcast( const DtAssistantMsg& msg );
00094 
00096    virtual void sendConnMsg( int compId, bool disconnect = false, 
00097       const MAKRti::DtString& display = MAKRti::DtString::nullString() );
00098 
00100    virtual void sendConnRespMsg( int compId, const DtRtiConnectionInfoDataPair& conn,
00101       const DtRtiConnectionConfigurationInfo& config, bool accepted );
00102 
00104    virtual void sendLicRespMsg( int compId, bool runUnlicensed, 
00105       const MAKRti::DtString& server, int port, bool accepted );
00106 
00108    virtual void sendAssistantCommandResponseMsg( 
00109                      int compId, const MAKRti::DtString& formattedData );
00110 
00112    virtual void sendNtfyLvlUpdateMsg( int compId, DtNotifyLevelType notifyLevel );
00113 
00116    virtual void sendLatencyTestRequestMsg( int compId, bool runTest, bool continuous,
00117       bool shouldHalt, bool observing, unsigned int interactionPeriod, 
00118       unsigned int numInteractions, unsigned int payloadBytes, 
00119       unsigned long federationHandle = 0,
00120       unsigned long initFedHandle = 0 );
00121 
00124    virtual void sendNetworkTestEnableMsg( int compId, int federationHdl, bool enable );
00125 
00127    virtual void sendLogEnableMsg( int compId, bool enable );
00128 
00131    virtual void sendObserveRtiexecMsg( int compId, bool isObserved, 
00132       unsigned int timeStateIntervalMs );
00133 
00136    virtual void sendObserveRtiexecLogMsg( int connId, bool isObserved );
00137 
00140    virtual void sendObserveRtiForwarderMsg( int compId, bool isObserved, 
00141       unsigned int timeStateIntervalMs, int defunctRemovalTime );
00142 
00145    virtual void sendSingleObserveRtiExecMsg( int compId );
00146 
00149    virtual void sendSingleObserveForwarderMsg( int compId );
00150 
00152    virtual void sendFederateResignMsg( int compId, int federationHdl, int federateHdl );
00153 
00155    virtual void sendFederationDestroyMsg( int compId, int federationHdl );
00156 
00158    virtual void sendDeleteFederateMsg( int compId, DtU16 fedexHandle, DtU16 fedHandle );
00159 
00161    virtual void sendRidParamsRequestMsg( int compId );
00162 
00165    virtual void sendLogRequestMsg( int compId, unsigned maxLogSize );
00166 
00169    virtual void sendExitMsg( int compId = -1 );
00170 
00173    virtual void sendDoNotWaitForForwardersMsg( int compId );
00174 
00177    virtual void forwardMsg( const DtAssistantMsg& msg );
00178 
00180    virtual void sendSignalTickIntervalMsg( int compId, float signalTickInterval );
00181    
00184    virtual int currentCompId() const;
00185 
00187    virtual void closeConn( int compId );
00188 
00190    virtual int port() const;
00191 
00193    virtual DtU32 maxMsgSize() const;
00194 
00196    static void tcpSocketAdditionCb( DtTcpMsgSocket* sock, void* usr );
00197    static void tcpSocketRemovalCb( DtTcpMsgSocket* sock, void* usr );
00198 
00199 #ifdef DtDIAGNOSTIC
00200 
00201    void enableMsgDiagnostics( bool enable );
00202 
00203 #endif
00204 
00205 protected:
00206 
00208    virtual void sendMsg( DtTcpMsgSocket* sock, const DtAssistantMsg& msg );
00209 
00211    virtual void testConnections();
00212    
00215    virtual bool readAndProcess( DtTime maxTimePerSocket );
00216 
00218    virtual void tcpSocketAdditionCb( DtTcpMsgSocket* sock );
00219    virtual void tcpSocketRemovalCb( DtTcpMsgSocket* sock );
00220 
00222    virtual std::auto_ptr<DtAssistantMsg> netRead( DtTcpMsgSocket* sock, int *retCode) const;
00223 
00225    virtual void setMsgFactory(DtAssistantMessageFactory* fact);
00226    virtual DtAssistantMessageFactory* msgFactory() const;
00227 
00228 private:
00230    DtRtiAssistantServer( const DtRtiAssistantServer& );
00231    DtRtiAssistantServer& operator=( const DtRtiAssistantServer& );
00232 
00233 protected:
00234 
00236    typedef std::map< int, DtTcpMsgSocket* > CompIdToSocketMap;
00237    typedef std::map< DtTcpMsgSocket*, int > SocketToCompIdMap;
00238 
00240    SocketToCompIdMap myIdsByConnection;
00241 
00243    CompIdToSocketMap myConnectionsById;
00244 
00246    int myNextCompId;
00247 
00249    DtAssistantMessageFactory* myMessageFactory;
00250 
00252    DtAssistantDfltMsgFactory myDefaultMessageFactory;
00253 
00256    DtTcpMsgSocket* myCurrentSocket;
00257 
00259    unsigned int myPort;
00260 
00262    DtClock myClock;
00263 
00265    DtTime myConnTestInterval;
00266 
00268    DtTime myTimeToTestConnections;
00269 
00271    std::auto_ptr<DtTcpMsgSocketMgr> mySocketMgr;
00272 
00274    std::list< DtTcpMsgSocket* > mySocketsToDisconnect;
00275 
00277    DtAssistantMsgCbMgr myMsgCbMgr;
00278 
00280    std::map<int, MAKRti::DtString> myDisconnectReasons;
00281 
00283    DtAssistantSocketAdditionCallbackList myAdditionCallbacks;
00284    DtAssistantSocketRemovalCallbackList myRemovalCallbacks;
00285 
00287    unsigned myNumMsgsSent;
00288 
00290    unsigned myNumMsgsReceived;
00291 
00292 #ifdef DtDIAGNOSTIC
00293    bool myDiagnosticsEnabled;
00294 #endif
00295 };
00296 
00297 
00298 #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)