VirtualBox

Changeset 49110 in vbox for trunk/src/VBox/NetworkServices


Ignore:
Timestamp:
Oct 15, 2013 8:56:52 AM (11 years ago)
Author:
vboxsync
Message:

VBoxNetLwipNAT.cpp: extend listener scope to class level.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/NetworkServices/NAT/VBoxNetLwipNAT.cpp

    r49109 r49110  
    2626#include <VBox/com/errorprint.h>
    2727#include <VBox/com/VirtualBox.h>
     28#include <VBox/com/NativeEventQueue.h>
    2829
    2930#include <iprt/net.h>
     
    120121typedef VECNATSERVICEPF::const_iterator CITERATORNATSERVICEPF;
    121122
    122 class NATNetworkListener;
     123
     124class VBoxNetLwipNAT;
     125
     126
     127class NATNetworkListener
     128{
     129public:
     130    NATNetworkListener():m_pNAT(NULL){}
     131
     132    HRESULT init(VBoxNetLwipNAT *pNAT)
     133    {
     134        AssertPtrReturn(pNAT, E_INVALIDARG);
     135
     136        m_pNAT = pNAT;
     137        return S_OK;
     138    }
     139
     140    HRESULT init()
     141    {
     142        m_pNAT = NULL;
     143        return S_OK;
     144    }
     145
     146    void uninit() { m_pNAT = NULL; }
     147
     148    STDMETHOD(HandleEvent)(VBoxEventType_T aEventType, IEvent *pEvent);
     149
     150private:
     151    VBoxNetLwipNAT *m_pNAT;
     152};
     153typedef ListenerImpl<NATNetworkListener, VBoxNetLwipNAT *> NATNetworkListenerImpl;
     154VBOX_LISTENER_DECLARE(NATNetworkListenerImpl)
     155
    123156
    124157class VBoxNetLwipNAT: public VBoxNetBaseService
     
    153186    /* Our NAT network descriptor in Main */
    154187    ComPtr<INATNetwork> net;
     188    ComPtr<NATNetworkListenerImpl> m_listener;
    155189    STDMETHOD(HandleEvent)(VBoxEventType_T aEventType, IEvent *pEvent);
    156190
     
    175209
    176210
    177 class NATNetworkListener
    178 {
    179 public:
    180     NATNetworkListener():m_pNAT(NULL){}
    181 
    182     HRESULT init(VBoxNetLwipNAT *pNAT)
    183     {
    184         AssertPtrReturn(pNAT, E_INVALIDARG);
    185 
    186         m_pNAT = pNAT;
    187         return S_OK;
    188     }
    189 
    190     HRESULT init()
    191     {
    192         m_pNAT = NULL;
    193         return S_OK;
    194     }
    195 
    196     void uninit() { m_pNAT = NULL; }
    197 
    198     STDMETHOD(HandleEvent)(VBoxEventType_T aEventType, IEvent *pEvent)
    199     {
    200         if (m_pNAT)
    201             return m_pNAT->HandleEvent(aEventType, pEvent);
    202         else
    203             return E_FAIL;
    204     }
    205 
    206 private:
    207     VBoxNetLwipNAT *m_pNAT;
    208 };
    209 
    210 
    211 typedef ListenerImpl<NATNetworkListener, VBoxNetLwipNAT *> NATNetworkListenerImpl;
    212 VBOX_LISTENER_DECLARE(NATNetworkListenerImpl)
    213 
    214 
    215 
    216211static VBoxNetLwipNAT *g_pLwipNat;
     212
     213STDMETHODIMP NATNetworkListener::HandleEvent(VBoxEventType_T aEventType, IEvent *pEvent)
     214{
     215    if (m_pNAT)
     216        return m_pNAT->HandleEvent(aEventType, pEvent);
     217    else
     218        return E_FAIL;
     219}
     220
    217221
    218222
     
    912916    hrc = pES->RegisterListener(listener, ComSafeArrayAsInParam(events), true);
    913917    AssertComRCReturn(hrc, VERR_INTERNAL_ERROR);
     918
     919    m_listener = listener;
    914920#endif
    915921
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette