windows-nt/Source/XPSP1/NT/admin/snapin/dfsadmin/dfsgui/custop.h
2020-09-26 16:20:57 +08:00

216 lines
6.8 KiB
C++

/*++
Module Name:
CusTop.cpp
Abstract:
This module contains the declaration of the CCustomTopology.
This class displays the Customize Topology Dialog.
*/
#ifndef __CUSTOP_H_
#define __CUSTOP_H_
#include "resource.h" // main symbols
#include "DfsEnums.h"
#include "DfsCore.h"
#include <schedule.h>
#include <list>
using namespace std;
class CCusTopMember
{
public:
~CCusTopMember();
CComBSTR m_bstrMemberDN;
CComBSTR m_bstrServer;
CComBSTR m_bstrSite;
HRESULT Init(BSTR bstrMemberDN, BSTR bstrServer, BSTR bstrSite);
void _Reset();
};
typedef list<CCusTopMember *> CCusTopMemberList;
void FreeCusTopMembers(CCusTopMemberList *pList);
class CCusTopConnection
{
public:
CCusTopConnection();
~CCusTopConnection();
CComBSTR m_bstrFromMemberDN;
CComBSTR m_bstrFromServer;
CComBSTR m_bstrFromSite;
CComBSTR m_bstrToMemberDN;
CComBSTR m_bstrToServer;
CComBSTR m_bstrToSite;
BOOL m_bStateOld;
BOOL m_bStateNew;
SCHEDULE* m_pScheduleOld;
SCHEDULE* m_pScheduleNew;
CONNECTION_OPTYPE m_opType;
HRESULT Init(
BSTR bstrFromMemberDN, BSTR bstrFromServer, BSTR bstrFromSite,
BSTR bstrToMemberDN, BSTR bstrToServer, BSTR bstrToSite,
BOOL bState = TRUE, CONNECTION_OPTYPE opType = CONNECTION_OPTYPE_OTHERS);
HRESULT Copy(CCusTopConnection* pConn);
void _Reset();
};
typedef list<CCusTopConnection *> CCusTopConnectionList;
void FreeCusTopConnections(CCusTopConnectionList *pList);
typedef struct _RSTOPOLOGYPREF_STRING
{
PTSTR pszTopologyPref;
int nStringID;
} RSTOPOLOGYPREF_STRING;
extern RSTOPOLOGYPREF_STRING g_TopologyPref[];
/////////////////////////////////////////////////////////////////////////////
// CCustomTopology
class CCustomTopology :
public CDialogImpl<CCustomTopology>
{
public:
CCustomTopology();
~CCustomTopology();
enum { IDD = IDD_FRS_CUSTOM_TOPOLOGY };
BEGIN_MSG_MAP(CCustomTopology)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
MESSAGE_HANDLER(WM_HELP, OnCtxHelp)
MESSAGE_HANDLER(WM_CONTEXTMENU, OnCtxMenuHelp)
MESSAGE_HANDLER(WM_NOTIFY, OnNotify)
COMMAND_ID_HANDLER(IDOK, OnOK)
COMMAND_ID_HANDLER(IDCANCEL, OnCancel)
COMMAND_ID_HANDLER(IDC_FRS_CUSTOP_TOPOLOGYPREF, OnTopologyPref)
COMMAND_ID_HANDLER(IDC_FRS_CUSTOP_HUBSERVER, OnHubServer)
COMMAND_ID_HANDLER(IDC_FRS_CUSTOP_REBUILD, OnRebuild)
COMMAND_ID_HANDLER(IDC_FRS_CUSTOP_CONNECTIONS_NEW, OnConnectionsNew)
COMMAND_ID_HANDLER(IDC_FRS_CUSTOP_CONNECTIONS_DELETE, OnConnectionsDelete)
COMMAND_ID_HANDLER(IDC_FRS_CUSTOP_SCHEDULE, OnSchedule)
END_MSG_MAP()
// Command Handlers
LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnCtxHelp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnCtxMenuHelp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnOK(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnCancel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnTopologyPref(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnHubServer(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnRebuild(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnConnectionsNew(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnConnectionsDelete(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnSchedule(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnNotify(
IN UINT i_uMsg,
IN WPARAM i_wParam,
IN LPARAM i_lParam,
IN OUT BOOL& io_bHandled
);
// Methods to access data in the dialog.
HRESULT put_ReplicaSet(IReplicaSet* i_piReplicaSet);
protected:
void _Reset();
void _EnableButtonsForConnectionList();
BOOL _EnableRebuild();
HRESULT _AddToConnectionListAndView(CCusTopConnection *pConn);
HRESULT _RemoveFromConnectionList(CCusTopConnection *pConn);
HRESULT _SetConnectionState(CCusTopConnection *pConn);
HRESULT _InsertConnection(CCusTopConnection *pConn);
HRESULT _SortMemberList();
HRESULT _GetMemberList();
HRESULT _GetConnectionList();
HRESULT _GetMemberDNInfo(
IN BSTR i_bstrMemberDN,
OUT BSTR* o_pbstrServer,
OUT BSTR* o_pbstrSite
);
HRESULT _GetHubMember(
OUT CCusTopMember** o_ppMember
);
HRESULT _RebuildConnections(
IN BSTR i_bstrTopologyPref,
IN CCusTopMember* i_pHubMember
);
HRESULT _MakeConnections();
HRESULT _InitScheduleOnSelectedConnections();
HRESULT _UpdateScheduleOnSelectedConnections(IN SCHEDULE* i_pSchedule);
CComBSTR m_bstrTopologyPref; // FRS_RSTOPOLOGYPREF
CComBSTR m_bstrHubMemberDN; // HubMemberDN
CComPtr<IReplicaSet> m_piReplicaSet;
CCusTopMemberList m_MemberList;
CCusTopConnectionList m_ConnectionList;
};
/////////////////////////////////////////////////////////////////////////////
// CNewConnections
class CNewConnections :
public CDialogImpl<CNewConnections>
{
public:
CNewConnections();
~CNewConnections();
enum { IDD = IDD_FRS_NEW_CONNECTIONS };
BEGIN_MSG_MAP(CNewConnections)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
MESSAGE_HANDLER(WM_HELP, OnCtxHelp)
MESSAGE_HANDLER(WM_CONTEXTMENU, OnCtxMenuHelp)
MESSAGE_HANDLER(WM_NOTIFY, OnNotify)
COMMAND_ID_HANDLER(IDOK, OnOK)
COMMAND_ID_HANDLER(IDCANCEL, OnCancel)
END_MSG_MAP()
// Command Handlers
LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnCtxHelp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnCtxMenuHelp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnOK(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnCancel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnNotify(
IN UINT i_uMsg,
IN WPARAM i_wParam,
IN LPARAM i_lParam,
IN OUT BOOL& io_bHandled
);
HRESULT Initialize(CCusTopMemberList* i_pMemberList);
HRESULT get_NewConnections(CCusTopConnectionList** ppConnectionList);
protected:
CCusTopMemberList* m_pMemberList; // do not release it
CCusTopConnectionList m_NewConnectionList; // released in desctructor
};
int CALLBACK ConnectionsListCompareProc(
IN LPARAM lParam1,
IN LPARAM lParam2,
IN LPARAM lParamColumn);
int CALLBACK MembersListCompareProc(
IN LPARAM lParam1,
IN LPARAM lParam2,
IN LPARAM lParamColumn);
#endif //__CUSTOP_H_