OW_NAMESPACE::ProviderIFCLoaderBase Class Reference

This class is a base class for different provider interface loading strategies. More...

#include <OW_ProviderIFCLoader.hpp>

Inheritance diagram for OW_NAMESPACE::ProviderIFCLoaderBase:

Inheritance graph
[legend]
Collaboration diagram for OW_NAMESPACE::ProviderIFCLoaderBase:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 ProviderIFCLoaderBase (SharedLibraryLoaderRef sll, ServiceEnvironmentIFCRef env)
virtual ~ProviderIFCLoaderBase ()
virtual void loadIFCs (Array< ProviderIFCBaseIFCRef > &interfaces) const =0
 This function needs to be overridden by derived classes and implement a strategy to obtain the shared library names of the provider interfaces.
ServiceEnvironmentIFCRef getEnvironment () const

Protected Member Functions

ProviderIFCBaseIFCRef createProviderIFCFromLib (const String &libname) const
 Function uses the SharedLibraryLoader to load the library designated by libname (probably a filename) and creates an ProviderIFCBaseIFCRef.

Private Attributes

const SharedLibraryLoaderRef m_sll
ServiceEnvironmentIFCRef m_env

Detailed Description

This class is a base class for different provider interface loading strategies.

Each derived class should implement a method of locating the provider interface shared libraries. The loadIFCs function needs to be overridden, and then the createProviderIFCFromLib function can be used to actually load the shared library.

Definition at line 58 of file OW_ProviderIFCLoader.hpp.


Constructor & Destructor Documentation

OW_NAMESPACE::ProviderIFCLoaderBase::ProviderIFCLoaderBase SharedLibraryLoaderRef  sll,
ServiceEnvironmentIFCRef  env
[inline]
 

Definition at line 61 of file OW_ProviderIFCLoader.hpp.

OW_NAMESPACE::ProviderIFCLoaderBase::~ProviderIFCLoaderBase  )  [virtual]
 

Definition at line 135 of file OW_ProviderIFCLoader.cpp.


Member Function Documentation

ProviderIFCBaseIFCRef OW_NAMESPACE::ProviderIFCLoaderBase::createProviderIFCFromLib const String libname  )  const [protected]
 

Function uses the SharedLibraryLoader to load the library designated by libname (probably a filename) and creates an ProviderIFCBaseIFCRef.

Parameters:
libname The name of the library to load.
Returns:
A pair containing a ref counted pointer to the ProviderIFCBaseIFC corresponding to libname and a ref counted point to the corresponding SharedLibrary. If loading the library fails, null is returned. e.g. retval.first.isNull() == true and retval.second.isNull() == true.

Definition at line 58 of file OW_ProviderIFCLoader.cpp.

References OW_NAMESPACE::COMPONENT_NAME, m_env, m_sll, OW_LOG_DEBUG, and OW_THROW.

ServiceEnvironmentIFCRef OW_NAMESPACE::ProviderIFCLoaderBase::getEnvironment  )  const [inline]
 

Definition at line 105 of file OW_ProviderIFCLoader.hpp.

References m_env.

Referenced by OW_NAMESPACE::ProviderIFCLoader::loadIFCs().

virtual void OW_NAMESPACE::ProviderIFCLoaderBase::loadIFCs Array< ProviderIFCBaseIFCRef > &  interfaces  )  const [pure virtual]
 

This function needs to be overridden by derived classes and implement a strategy to obtain the shared library names of the provider interfaces.

Once the file names are obtained it should call createProviderIFCFromLib and add the returned provider interface into interfaces.

Parameters:
interfaces This is an out parameter. The ProviderIFC refs will be added to the array.
shlibs This is an our parameter. The shared libraries of the ProviderIFC refs will be added to this array. NOTE: The provider IFC refs MUST go away and delete the underlying object before the libraries are deleted, otherwise the program will segfault.
The derived classes code will probably be similar to this: virtual void loadIFCs( Array<ProviderIFCBaseIFCRef>& ifcs, Array<SharedLibraryRef>& shlibs) const { ifc_lib_pair rval; rval = createProviderIFCFromLib( "libname" ); if ( !rval.first.isNull() && !rval.second.isNull() ) { out.push_back( rval.first ); shlibs.push_back( rval.second ); }

rval = createProviderIFCFromLib( "libname2" ); if ( !rval.first.isNull() && !rval.second.isNull() ) { out.push_back( rval.first ); shlibs.push_back( rval.second ); } }

Implemented in OW_NAMESPACE::ProviderIFCLoader.


Member Data Documentation

ServiceEnvironmentIFCRef OW_NAMESPACE::ProviderIFCLoaderBase::m_env [private]
 

Definition at line 126 of file OW_ProviderIFCLoader.hpp.

Referenced by createProviderIFCFromLib().

const SharedLibraryLoaderRef OW_NAMESPACE::ProviderIFCLoaderBase::m_sll [private]
 

Definition at line 125 of file OW_ProviderIFCLoader.hpp.

Referenced by createProviderIFCFromLib().


The documentation for this class was generated from the following files:
Generated on Thu Feb 9 09:12:55 2006 for openwbem by  doxygen 1.4.6