|
|
#ifndef _WLBSCLASSES_INCLUDED_
#define _WLBSCLASSES_INCLUDED_
#include <atlbase.h>
#include <wbemprov.h>
#include "debug.h"
//forward declarations
struct ParsedObjectPath;
////////////////////////////////////////////////////////////////////////////////
//
// class CWlbs_Root
//
// Purpose: This class servers as the base for all classes that implement
// specific Wbem classes. A pointer to this class is utilized
// polymorphically within CWLBSProvider.
//
////////////////////////////////////////////////////////////////////////////////
class CWlbs_Root
{ public: CWlbs_Root(CWbemServices* a_pNameSpace, IWbemObjectSink* a_pResponseHandler); virtual ~CWlbs_Root();
static void CreateExtendedStatus( CWbemServices* a_pNameSpace, IWbemClassObject** a_ppWbemInstance, DWORD a_dwErrorCode = 0, LPCWSTR a_szDescription = NULL );
HRESULT virtual GetInstance( const ParsedObjectPath* a_pParsedPath, long a_lFlags = 0, IWbemContext* a_pIContex = NULL) = 0;
HRESULT virtual DeleteInstance( const ParsedObjectPath* a_pParsedPath, long a_lFlags = 0, IWbemContext* a_pIContex = NULL ) { throw _com_error( WBEM_E_NOT_SUPPORTED ); return WBEM_E_FAILED; }
HRESULT virtual PutInstance( IWbemClassObject* a_pInstance, long a_lFlags = 0, IWbemContext* a_pIContex = NULL ) { throw _com_error( WBEM_E_NOT_SUPPORTED ); return WBEM_E_FAILED; }
HRESULT virtual EnumInstances( BSTR a_bstrClass = NULL, long a_lFlags = 0, IWbemContext* a_pIContex = NULL ) = 0;
HRESULT virtual ExecMethod( const ParsedObjectPath* a_pParsedPath , const BSTR& a_strMethodName, long a_lFlags = 0, IWbemContext* a_pIContex = NULL, IWbemClassObject* a_pIInParams = NULL ) { throw _com_error(WBEM_E_NOT_SUPPORTED); return WBEM_E_NOT_SUPPORTED; }
void SpawnInstance ( LPCWSTR a_szClassName, IWbemClassObject** a_ppWbemInstance );
protected: CWbemServices* m_pNameSpace; IWbemObjectSink* m_pResponseHandler;
void virtual GetMethodOutputInstance( LPCWSTR a_szMethodClass, const BSTR a_strMethodName, IWbemClassObject** a_ppOutputInstance);
void UpdateConfigProp( wstring& a_szDest, const wstring& a_szSrc, LPCWSTR a_szPropName, IWbemClassObject* a_pNodeInstance );
void UpdateConfigProp( bool& a_bDest, bool a_bSrc, LPCWSTR a_szPropName, IWbemClassObject* a_pNodeInstance );
void UpdateConfigProp( DWORD& a_bDest, DWORD a_bSrc, LPCWSTR a_szPropName, IWbemClassObject* a_pNodeInstance );
static void ConstructHostName( wstring& a_wstrHostName, DWORD a_dwClusIP, DWORD a_dwHostID );
public: static DWORD ExtractHostID (const wstring& a_wstrName); static DWORD ExtractClusterIP(const wstring& a_wstrName);
private: //This constructor must not be used.
CWlbs_Root();
};
class CWlbsClusterWrapper; class CWlbsControlWrapper;
CWlbsClusterWrapper* GetClusterFromHostName(CWlbsControlWrapper* pControl, wstring wstrHostName);
#endif //_WLBSCLASSES_INCLUDED_
|