Looks good to me (LGTM) -Fab
Hefty, Sean wrote on Tue, 27 Jul 2010 at 16:51:34 > nd2: simplify ND provider creation > > From: Sean Hefty <[email protected]> > > Remove the CNDClassFactory implementation and instead create > ND provider objects directly in DllGetClassObject(). > > Signed-off-by: Sean Hefty <[email protected]> > --- > trunk/ulp/netdirect2/user/nd_main.cpp | 9 +---- > trunk/ulp/netdirect2/user/nd_provider.cpp | 55 > +---------------------------- > trunk/ulp/netdirect2/user/nd_provider.h | 21 +---------- > 3 files changed, 6 insertions(+), 79 deletions(-) > > diff --git a/trunk/ulp/netdirect2/user/nd_main.cpp > b/trunk/ulp/netdirect2/user/nd_main.cpp > index 1b9e049..e995d60 100644 > --- a/trunk/ulp/netdirect2/user/nd_main.cpp > +++ b/trunk/ulp/netdirect2/user/nd_main.cpp > @@ -72,17 +72,12 @@ STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, > void** ppv) > { > UNREFERENCED_PARAMETER(rclsid); > > - if (riid != IID_IClassFactory) { > + if (riid != IID_INDProvider) { > *ppv = NULL; > return E_NOINTERFACE; > } > > - *ppv = new CNDClassFactory(); > - if (*ppv == NULL) { > - return E_OUTOFMEMORY; > - } > - > - return S_OK; > + return CNDProvider::CreateInstance(ppv); > } > > int WSPStartup(WORD wVersionRequested, LPWSPDATA lpWSPData, > diff --git a/trunk/ulp/netdirect2/user/nd_provider.cpp > b/trunk/ulp/netdirect2/user/nd_provider.cpp > index cbc9c22..37362f7 100644 > --- a/trunk/ulp/netdirect2/user/nd_provider.cpp > +++ b/trunk/ulp/netdirect2/user/nd_provider.cpp > @@ -1,5 +1,6 @@ > /* > * Copyright (c) 2009-2010 Intel Corporation. All rights reserved. > + * Copyright (c) 2010 Microsoft Corporation. All rights reserved. > * > * This software is available to you under the OpenIB.org BSD license > * below: > @@ -64,7 +65,7 @@ CNDProvider::~CNDProvider() > if (m_pWvProvider) { > m_pWvProvider->Release(); > } > - InterlockedDecrement(&m_gRef); > + InterlockedDecrement(&g_nRef); > } > > STDMETHODIMP CNDProvider:: > @@ -176,55 +177,3 @@ OpenAdapter(REFIID iid, UINT64 adapterId, VOID** > ppAdapter) > > return CNDAdapter::CreateInstance(this, adapterId, ppAdapter); > } > - > - > -//------------------------- > -// CNDClassFactory routines > -//------------------------- > - > -STDMETHODIMP CNDClassFactory:: > -QueryInterface(REFIID riid, LPVOID FAR* ppvObj) > -{ > - if (riid != IID_IUnknown && riid != IID_IClassFactory) { > - *ppvObj = NULL; > - return E_NOINTERFACE; > - } > - > - *ppvObj = this; > - AddRef(); > - return ND_SUCCESS; > -} > - > -STDMETHODIMP_(ULONG) CNDClassFactory:: > -AddRef(void) > -{ > - return CNDBase::AddRef(); > -} > - > -STDMETHODIMP_(ULONG) CNDClassFactory:: > -Release(void) > -{ > - return CNDBase::Release(); > -} > - > -STDMETHODIMP CNDClassFactory:: > -CreateInstance(IUnknown* pUnkOuter, REFIID riid, void** ppObject) > -{ > - if (pUnkOuter != NULL) { > - return CLASS_E_NOAGGREGATION; > - } > - > - if (riid != IID_INDProvider) { > - *ppObject = NULL; > - return E_NOINTERFACE; > - } > - > - return CNDProvider::CreateInstance((CNDProvider **) ppObject); > -} > - > -STDMETHODIMP CNDClassFactory:: > -LockServer(BOOL fLock) > -{ > - UNREFERENCED_PARAMETER(fLock); > - return S_OK; > -} > diff --git a/trunk/ulp/netdirect2/user/nd_provider.h > b/trunk/ulp/netdirect2/user/nd_provider.h > index 0c38d8e..10d3900 100644 > --- a/trunk/ulp/netdirect2/user/nd_provider.h > +++ b/trunk/ulp/netdirect2/user/nd_provider.h > @@ -1,5 +1,6 @@ > /* > * Copyright (c) 2009-2010 Intel Corporation. All rights reserved. > + * Copyright (c) 2010 Microsoft Corporation. All rights reserved. > * > * This software is available to you under the OpenIB.org BSD license > * below: > @@ -56,7 +57,7 @@ public: > > void Delete() {delete this;} > static STDMETHODIMP > - CreateInstance(CNDProvider **ppProvider) > + CreateInstance(VOID** ppProvider) > { > HRESULT hr; > CNDProvider *provider; > @@ -90,22 +91,4 @@ private: > STDMETHODIMP Init(); > }; > > - > -class CNDClassFactory : public IClassFactory, public CNDBase > -{ > -public: > - // IUnknown methods > - STDMETHODIMP QueryInterface(REFIID riid, LPVOID FAR* ppvObj); > - STDMETHODIMP_(ULONG) AddRef(); > - STDMETHODIMP_(ULONG) Release(); > - > - // IClassFactory methods > - STDMETHODIMP CreateInstance(IUnknown* pUnkOuter, REFIID riid, void** > ppObject); > - STDMETHODIMP LockServer(BOOL fLock); > - > - CNDClassFactory() {}; > - ~CNDClassFactory() {}; > - void Delete() {delete this;} > -}; > - > #endif // _ND_PROVIDER_H_ > \ No newline at end of file > > > _______________________________________________ > ofw mailing list > [email protected] > http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw > > _______________________________________________ ofw mailing list [email protected] http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw
