|
|
/*++
Module Name:
MmcRep.h
Abstract:
This module contains the definition for CMmcDfsReplica class. This is an class for MMC display related calls for the thrid level node(the DfsReplica nodes)
--*/
#if !defined(AFX_MMCDFSREPLICA_H__6A7EDAC4_3FAC_11D1_AA1C_00C06C00392D__INCLUDED_)
#define AFX_MMCDFSREPLICA_H__6A7EDAC4_3FAC_11D1_AA1C_00C06C00392D__INCLUDED_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
#include "DfsCore.h"
#include "MmcDispl.h"
#include "MmcRoot.h"
#include "MmcJP.h"
#include "NewFrs.h"
class CMmcDfsReplica : public CMmcDisplay { public: CMmcDfsReplica( IDfsReplica* i_pReplicaObject, CMmcDfsJunctionPoint* i_pJPObject );
CMmcDfsReplica( IDfsReplica* i_pReplicaObject, CMmcDfsRoot* i_pJPObject );
virtual ~CMmcDfsReplica();
// For adding context menu items
STDMETHOD(AddMenuItems)( IN LPCONTEXTMENUCALLBACK i_lpContextMenuCallback, IN LPLONG i_lpInsertionAllowed );
// For taking action on a context menu selection.
STDMETHOD(Command)( IN LONG i_lCommandID );
// Set the headers for the listview (in the result pane) column
STDMETHOD(SetColumnHeader)( IN LPHEADERCTRL2 i_piHeaderControl );
// Return the requested display information for the Result Pane
STDMETHOD(GetResultDisplayInfo)( IN OUT LPRESULTDATAITEM io_pResultDataItem );
// Return the requested display information for the Scope Pane
STDMETHOD(GetScopeDisplayInfo)( IN OUT LPSCOPEDATAITEM io_pScopeDataItem ) { return S_OK; }
// Add items(or folders), if any to the Scope Pane
STDMETHOD(EnumerateScopePane)( IN LPCONSOLENAMESPACE i_lpConsoleNameSpace, IN HSCOPEITEM i_hParent ) { return S_OK; }
// Add items(or folders), if any to the Result Pane
STDMETHOD(EnumerateResultPane)( IN OUT IResultData* io_pResultData ) { return S_OK; }
// Set the console verb settings. Change the state, decide the default verb, etc
STDMETHOD(SetConsoleVerbs)( IN LPCONSOLEVERB i_lpConsoleVerb );
// Add an item to the result pane
STDMETHOD(AddItemToResultPane)( IN IResultData* i_lpResultData );
// Checks whether the object has pages to display
STDMETHOD(QueryPagesFor)( ) { return S_FALSE; };
// Creates and passes back the pages to be displayed
STDMETHOD(CreatePropertyPages)( IN LPPROPERTYSHEETCALLBACK i_lpPropSheetCallback, IN LONG_PTR i_lNotifyHandle ) { return E_UNEXPECTED; };
// Used to notify the object that it's properties have changed
STDMETHOD(PropertyChanged)( ) { return E_UNEXPECTED; };
// Used to set the result view description bar text
STDMETHOD(SetDescriptionBarText)( IN LPRESULTDATA i_lpResultData ) { RETURN_INVALIDARG_IF_NULL(i_lpResultData); return i_lpResultData->SetDescBarText(NULL); }
STDMETHOD(SetStatusText)( IN LPCONSOLE2 i_lpConsole ) { RETURN_INVALIDARG_IF_NULL(i_lpConsole); return i_lpConsole->SetStatusText(m_bstrStatusText); }
// MMCN_DBLCLICK invoke the open ctxmenu.
STDMETHOD(DoDblClick)( ) { (void) OnOpen(); return S_OK; }
// Delete the current item.
STDMETHOD(DoDelete)( );
// Remove a replica
STDMETHOD(RemoveReplica)( ); // Remove a replica
STDMETHOD(OnRemoveReplica)( ); // confirm removal of replica
STDMETHOD(ConfirmOperationOnDfsTarget)(int idString);
// Check the replica status
STDMETHOD(OnCheckStatus)( );
// Handle a select event for the node. Handle only toolbar related
// activities here
STDMETHOD(ToolbarSelect)( IN const LONG i_lArg, IN IToolbar* i_pToolBar );
// Handle a click on the toolbar
STDMETHOD(ToolbarClick)( IN const LPCONTROLBAR i_pControlbar, IN const LPARAM i_lParam );
STDMETHOD(TakeReplicaOffline)( );
STDMETHOD(ViewChange)( IResultData* i_pResultData, LONG_PTR i_lHint );
DISPLAY_OBJECT_TYPE GetDisplayObjectType() { return DISPLAY_OBJECT_TYPE_REPLICA; }
HRESULT CreateToolbar( IN const LPCONTROLBAR i_pControlbar, IN const LPEXTENDCONTROLBAR i_lExtendControlbar, OUT IToolbar** o_pToolBar );
HRESULT OnRefresh( ) { return(E_NOTIMPL); }
HRESULT OnReplicate();
HRESULT OnStopReplication(BOOL bConfirm = FALSE);
HRESULT GetReplicationInfo();
HRESULT GetReplicationInfoEx(CAlternateReplicaInfo** o_ppInfo);
HRESULT ShowReplicationInfo(IReplicaSet* i_piReplicaSet);
HRESULT GetBadMemberInfo( IN IReplicaSet* i_piReplicaSet, IN BSTR i_bstrServerName, OUT BSTR* o_pbstrDnsHostName, OUT BSTR* o_pbstrRootPath);
HRESULT DeleteBadFRSMember( IN IReplicaSet* i_piReplicaSet, IN BSTR i_bstrDisplayName, IN HRESULT i_hres);
HRESULT AddFRSMember( IN IReplicaSet* i_piReplicaSet, IN BSTR i_bstrDnsHostName, IN BSTR i_bstrRootPath, IN BSTR i_bstrStagingPath);
HRESULT DeleteFRSMember( IN IReplicaSet* i_piReplicaSet, IN BSTR i_bstrDnsHostName, IN BSTR i_bstrRootPath);
HRESULT RemoveReplicaFromSet();
HRESULT AllowFRSMemberDeletion(BOOL* pbRepSetExist);
// Internal methods
private: friend class CMmcDfsRoot;
HRESULT OnOpen();
STDMETHOD(RemoveFromMMC)() { return S_OK; }
STDMETHOD(CleanScopeChildren)() { return S_OK; }
STDMETHOD(CleanResultChildren)() { return S_OK; }
STDMETHOD(GetEntryPath)(BSTR* o_pbstrEntryPath) { return E_NOTIMPL;}
void _UpdateThisItem();
// Constants, Statics, etc
public: static const int m_iIMAGE_OFFSET;
CComBSTR m_bstrServerName; CComBSTR m_bstrShareName; CComBSTR m_bstrDisplayName; // Display name of the current Replica
long m_lReferralState; long m_lTargetState;
private:
HRESULTITEM m_hResultItem; // Resultitem handle
CComPtr<IResultData> m_pResultData;
CComPtr<IDfsReplica> m_pDfsReplicaObject; CMmcDfsJunctionPoint* m_pDfsParentJP; CMmcDfsRoot* m_pDfsParentRoot;
BOOL m_bFRSMember; CAlternateReplicaInfo* m_pRepInfo; CComBSTR m_bstrStatusText; CComBSTR m_bstrFRSColumnText;
CComBSTR m_bstrDfsReferralColumnText; CComBSTR m_bstrTargetStatusColumnText; };
#endif // !defined(AFX_MMCDFSREPLICA_H__6A7EDAC4_3FAC_11D1_AA1C_00C06C00392D__INCLUDED_)
|