|
|
/////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 1996-1997 Microsoft Corporation
//
// Module Name:
// Group.h
//
// Abstract:
// Definition of the CGroup class.
//
// Implementation File:
// Group.cpp
//
// Author:
// David Potter (davidp) May 3, 1996
//
// Revision History:
//
// Notes:
//
/////////////////////////////////////////////////////////////////////////////
#ifndef _GROUP_H_
#define _GROUP_H_
/////////////////////////////////////////////////////////////////////////////
// Forward Class Declarations
/////////////////////////////////////////////////////////////////////////////
class CGroup; class CGroupList;
/////////////////////////////////////////////////////////////////////////////
// External Class Declarations
/////////////////////////////////////////////////////////////////////////////
class CClusterDoc; class CClusterNode; class CNodeList; class CResourceList;
/////////////////////////////////////////////////////////////////////////////
// Type Definitions
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// Include Files
/////////////////////////////////////////////////////////////////////////////
#ifndef _TREEITEM_
#include "ClusItem.h" // for CClusterItem
#endif
#ifndef _RES_H_
#include "Res.h" // for CResourceList
#endif
#ifndef _PROPLIST_H_
#include "PropList.h" // for CObjectProperty, CClusPropList
#endif
/////////////////////////////////////////////////////////////////////////////
// CGroup command target
/////////////////////////////////////////////////////////////////////////////
class CGroup : public CClusterItem { DECLARE_DYNCREATE(CGroup)
// Construction
public: CGroup(void); // protected constructor used by dynamic creation
CGroup(IN BOOL bDocObj); void Init(IN OUT CClusterDoc * pdoc, IN LPCTSTR lpszName); void Create(IN OUT CClusterDoc * pdoc, IN LPCTSTR lpszName);
protected: void CommonConstruct(void);
// Attributes
protected: HGROUP m_hgroup; CLUSTER_GROUP_STATE m_cgs; CString m_strOwner; CClusterNode * m_pciOwner; CResourceList * m_plpcires;
DWORD m_nFailoverThreshold; DWORD m_nFailoverPeriod; CGAFT m_cgaftAutoFailbackType; DWORD m_nFailbackWindowStart; DWORD m_nFailbackWindowEnd;
CNodeList * m_plpcinodePreferredOwners;
enum { epropName = 0, epropDescription, epropFailoverThreshold, epropFailoverPeriod, epropAutoFailbackType, epropFailbackWindowStart, epropFailbackWindowEnd, epropMAX };
CObjectProperty m_rgProps[epropMAX];
public: HGROUP Hgroup(void) const { return m_hgroup; } CLUSTER_GROUP_STATE Cgs(void) const { return m_cgs; } const CString & StrOwner(void) const { return m_strOwner; } CClusterNode * PciOwner(void) const { return m_pciOwner; } const CResourceList & Lpcires(void) const { ASSERT(m_plpcires != NULL); return *m_plpcires; }
DWORD NFailoverThreshold(void) const { return m_nFailoverThreshold; } DWORD NFailoverPeriod(void) const { return m_nFailoverPeriod; } CGAFT CgaftAutoFailbackType(void) const { return m_cgaftAutoFailbackType; } DWORD NFailbackWindowStart(void) const { return m_nFailbackWindowStart; } DWORD NFailbackWindowEnd(void) const { return m_nFailbackWindowEnd; }
const CNodeList & LpcinodePreferredOwners(void) const { ASSERT(m_plpcinodePreferredOwners != NULL); return *m_plpcinodePreferredOwners; }
void GetStateName(OUT CString & rstrState) const;
// Operations
public: void Move(IN const CClusterNode * pciNode); void DeleteGroup(void); void ReadExtensions(void); void SetOwnerState(IN LPCTSTR pszNewOwner);
void AddResource(IN OUT CResource * pciResource); void RemoveResource(IN OUT CResource * pciResource);
void SetName(IN LPCTSTR pszName); void SetPreferredOwners(IN const CNodeList & rlpci); void SetCommonProperties( IN const CString & rstrDesc, IN DWORD nThreshold, IN DWORD nPeriod, IN CGAFT cgaft, IN DWORD nStart, IN DWORD nEnd, IN BOOL bValidateOnly ); void SetCommonProperties( IN const CString & rstrDesc, IN DWORD nThreshold, IN DWORD nPeriod, IN CGAFT cgaft, IN DWORD nStart, IN DWORD nEnd ) { SetCommonProperties(rstrDesc, nThreshold, nPeriod, cgaft, nStart, nEnd, FALSE /*bValidateOnly*/); } void ValidateCommonProperties( IN const CString & rstrDesc, IN DWORD nThreshold, IN DWORD nPeriod, IN CGAFT cgaft, IN DWORD nStart, IN DWORD nEnd ) { SetCommonProperties(rstrDesc, nThreshold, nPeriod, cgaft, nStart, nEnd, TRUE /*bValidateOnly*/); }
void ConstructList(OUT CNodeList & rlpci, IN DWORD dwType); void ConstructList(OUT CResourceList & rlpci, IN DWORD dwType); void ConstructPossibleOwnersList(OUT CNodeList & rlpciNodes);
// Overrides
public: virtual void Cleanup(void); virtual void ReadItem(void); virtual void UpdateState(void); virtual void Rename(IN LPCTSTR pszName); virtual BOOL BGetColumnData(IN COLID colid, OUT CString & rstrText); virtual BOOL BCanBeEdited(void) const; virtual BOOL BDisplayProperties(IN BOOL bReadOnly = FALSE);
// Drag & Drop
virtual BOOL BCanBeDragged(void) const { return TRUE; } virtual BOOL BCanBeDropTarget(IN const CClusterItem * pci) const; virtual void DropItem(IN OUT CClusterItem * pci);
virtual const CStringList * PlstrExtensions(void) const;
#ifdef _DISPLAY_STATE_TEXT_IN_TREE
virtual void GetTreeName(OUT CString & rstrName) const; #endif
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CGroup)
public: virtual void OnFinalRelease(); virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo); //}}AFX_VIRTUAL
virtual LRESULT OnClusterNotify(IN OUT CClusterNotify * pnotify);
protected: virtual const CObjectProperty * Pprops(void) const { return m_rgProps; } virtual DWORD Cprops(void) const { return sizeof(m_rgProps) / sizeof(CObjectProperty); } virtual DWORD DwSetCommonProperties(IN const CClusPropList & rcpl, IN BOOL bValidateOnly = FALSE);
// Implementation
public: virtual ~CGroup(void);
public: // Generated message map functions
//{{AFX_MSG(CGroup)
afx_msg void OnUpdateBringOnline(CCmdUI* pCmdUI); afx_msg void OnUpdateTakeOffline(CCmdUI* pCmdUI); afx_msg void OnUpdateMoveGroup(CCmdUI* pCmdUI); afx_msg void OnUpdateMoveGroupRest(CCmdUI* pCmdUI); afx_msg void OnUpdateDelete(CCmdUI* pCmdUI); afx_msg void OnUpdateProperties(CCmdUI* pCmdUI); afx_msg void OnCmdBringOnline(); afx_msg void OnCmdTakeOffline(); afx_msg void OnCmdMoveGroup(); afx_msg void OnCmdDelete(); //}}AFX_MSG
afx_msg BOOL OnUpdateMoveGroupItem(CCmdUI* pCmdUI); afx_msg BOOL OnUpdateMoveGroupSubMenu(CCmdUI* pCmdUI); afx_msg void OnCmdMoveGroup(IN UINT nID);
DECLARE_MESSAGE_MAP() #ifdef _CLUADMIN_USE_OLE_
DECLARE_OLECREATE(CGroup)
// Generated OLE dispatch map functions
//{{AFX_DISPATCH(CGroup)
// NOTE - the ClassWizard will add and remove member functions here.
//}}AFX_DISPATCH
DECLARE_DISPATCH_MAP() DECLARE_INTERFACE_MAP() #endif // _CLUADMIN_USE_OLE_
}; //*** class CGroup
/////////////////////////////////////////////////////////////////////////////
// CGroupList
/////////////////////////////////////////////////////////////////////////////
class CGroupList : public CClusterItemList { public: CGroup * PciGroupFromName( IN LPCTSTR pszName, OUT POSITION * ppos = NULL ) { return (CGroup *) PciFromName(pszName, ppos); }
}; //*** class CGroupList
/////////////////////////////////////////////////////////////////////////////
// Global Functions
/////////////////////////////////////////////////////////////////////////////
//void DeleteAllItemData(IN OUT CGroupList & rlp);
#ifdef _DEBUG
class CTraceTag; extern CTraceTag g_tagGroup; extern CTraceTag g_tagGroupNotify; #endif
/////////////////////////////////////////////////////////////////////////////
#endif // _GROUP_H_
|