MAK RTIspy API Documentation for HLA 1516
forwarderPingProcessor.h
Go to the documentation of this file.
00001 /*********************************************************************
00002 ** Copyright (c) 2005 MaK Technologies, Inc.
00003 ** All rights reserved.
00004 *********************************************************************/
00005 /*********************************************************************
00006 ** $RCSfile: forwarderPingProcessor.h,v $ $Revision: 1.4 $ $State: Exp $
00007 *********************************************************************/
00010 
00011 #ifndef DtForwarderPingProcessor_H_
00012 #define DtForwarderPingProcessor_H_
00013 
00014 #include "forwarderNode.h"
00015 #include "forwarderPingMsg.h"
00016 #include "routeMap.h"
00017 #include "rtiMsConfig.h"
00018 
00019 #include <vlutil/vlUtil.h>
00020 #include <map>
00021 #include <set>
00022 
00023 class DtForwarderPingFilter;
00024 class DtRtiExecDisconnectFilter;
00025 
00033 class DT_DLL_FORWARDER DtForwarderPingProcessor
00034 {
00035 public:
00037    typedef bool (DtForwarderPingProcessor::* PingMsgHandlerMemberCb)(
00038       const DtInetAddrAndPort& src, const DtForwarderPingMsg& msg  );
00039    typedef bool (DtForwarderPingProcessor::* DestinationProcessingMemberCb)(
00040       const DtInetAddrAndPort& src, DtForwarderPort::DtAddressPortList& destinations );
00041 
00043    DtForwarderPingProcessor( DtBoost::shared_ptr<DtForwarderNode> parent );
00044    
00046    virtual ~DtForwarderPingProcessor();
00047 
00049    virtual bool gotMsgToLanPort( const DtInetAddrAndPort& src,
00050       const DtForwarderPingMsg& msg );
00051 
00053    virtual bool gotMsgToOutPort( const DtInetAddrAndPort& src,
00054       const DtForwarderPingMsg& msg );
00055 
00058    virtual bool processPingMsgDestinations ( const DtInetAddrAndPort& src,
00059       DtForwarderPort::DtAddressPortList& destinations );
00060 
00064    virtual bool ignorePingMsgToLan ( const DtInetAddrAndPort& src,
00065       DtForwarderPort::DtAddressPortList& destinations );
00066 
00067 public:
00068 
00070    static int lostConnection( const MAKRti::DtString& connName, 
00071       unsigned int connID, const DtInetAddrAndPort& connAddr, void* usr );
00072 
00073 protected:
00074 
00076    virtual int lostConnection( const MAKRti::DtString& connName, 
00077       unsigned int connID, const DtInetAddrAndPort& connAddr );
00078    
00081    virtual void sendResponseMsg( unsigned long target,
00082       DtForwarderPingMsg::DtPingStatus status, 
00083       const DtInetAddrAndPort* addr = 0 );
00084 
00086    virtual bool processInToOutMsg( const DtInetAddrAndPort& src,
00087       const DtForwarderPingMsg& msg );
00088    
00090    virtual bool processLanToOutMsg( const DtInetAddrAndPort& src,
00091       const DtForwarderPingMsg& msg );
00092 
00093    
00094 protected:
00095 
00097    class PendingRequest
00098    {
00099    public:
00100       PendingRequest() :
00101          currentStatus( DtForwarderPingMsg::PingResponseNotFound ),
00102          destinationId( 0 ),
00103          sourceAddress(),
00104          pendingOutResponses() {}
00105          
00106       PendingRequest( const DtInetAddrAndPort& src, unsigned int destId,
00107                       const DtRouteMap::DtAddressPortList& expectedOutResponses ) :
00108          currentStatus( DtForwarderPingMsg::PingResponseNotFound ),
00109          destinationId( destId ),
00110          sourceAddress( src ),
00111          pendingOutResponses( expectedOutResponses ) {}
00112          
00113       DtForwarderPingMsg::DtPingStatus currentStatus;
00114       unsigned int                     destinationId;
00115       DtInetAddrAndPort                sourceAddress;
00116       DtRouteMap::DtAddressPortList    pendingOutResponses;
00117    };
00118 
00119    typedef std::map< unsigned long, PendingRequest > DtDestToRequestMap;
00120    
00121 protected:
00122 
00123    DtBoost::shared_ptr<DtForwarderNode>       myParent;
00124    DtForwarderPingFilter* myMsgToLanFilter;
00125    DtForwarderPingFilter* myMsgToOutFilter;
00126 
00128    DtDestToRequestMap   myPendingRequests;
00129    
00130 };
00131 
00132 #endif //! DtForwarderPingProcessor_H_
00133 

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)