windows-nt/Source/XPSP1/NT/base/cluster/admin/cluadmin/notify.cpp
2020-09-26 16:20:57 +08:00

236 lines
5.7 KiB
C++

/////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 1996-1999 Microsoft Corporation
//
// Module Name:
// Notify.cpp
//
// Abstract:
// Implementation of the notification classes.
//
// Author:
// David Potter (davidp) Septemper 26, 1996
//
// Revision History:
//
// Notes:
//
/////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "Notify.h"
#include "ClusDoc.h"
#include "ClusItem.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CNotifyKey
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
//++
//
// CClusterNotifyKey::CClusterNotifyKey
//
// Routine Description:
// Cluster notification key constructor for documents.
//
// Arguments:
// pdoc Pointer to the document.
//
// Return Value:
// None.
//
//--
/////////////////////////////////////////////////////////////////////////////
CClusterNotifyKey::CClusterNotifyKey(
IN CClusterDoc * pdoc
)
{
ASSERT_VALID(pdoc);
m_cnkt = cnktDoc;
m_pdoc = pdoc;
} //*** CClusterNotifyKey::CClusterNotifyKey(CClusterDoc*)
/////////////////////////////////////////////////////////////////////////////
//++
//
// CClusterNotifyKey::CClusterNotifyKey
//
// Routine Description:
// Cluster notification key constructor.
//
// Arguments:
// pci Pointer to the cluster item.
// lpszName Name of the object.
//
// Return Value:
// None.
//
//--
/////////////////////////////////////////////////////////////////////////////
CClusterNotifyKey::CClusterNotifyKey(
IN CClusterItem * pci,
IN LPCTSTR lpszName
)
{
ASSERT_VALID(pci);
ASSERT(lpszName != NULL);
ASSERT(*lpszName != _T('\0'));
m_cnkt = cnktClusterItem;
m_pci = pci;
try
{
m_strName = lpszName;
}
catch (...)
{
} // catch: anything
} //*** CClusterNotifyKey::CClusterNotifyKey(CClusterItem*)
//*************************************************************************//
/////////////////////////////////////////////////////////////////////////////
// Global Functions
/////////////////////////////////////////////////////////////////////////////
#ifdef _DEBUG
/////////////////////////////////////////////////////////////////////////////
//++
//
// PszNotificationName
//
// Routine Description:
// Get the name of a notification.
//
// Arguments:
// dwNotification [IN] Notification whose name is to be returned.
//
// Return Value:
// Name of the notificaiton.
//
//--
/////////////////////////////////////////////////////////////////////////////
LPCTSTR PszNotificationName(IN DWORD dwNotification)
{
switch (dwNotification)
{
case CLUSTER_CHANGE_NODE_STATE:
return _T("NODE_STATE");
case CLUSTER_CHANGE_NODE_DELETED:
return _T("NODE_DELETED");
case CLUSTER_CHANGE_NODE_ADDED:
return _T("NODE_ADDED");
case CLUSTER_CHANGE_NODE_PROPERTY:
return _T("NODE_PROPERTY");
case CLUSTER_CHANGE_REGISTRY_NAME:
return _T("REGISTRY_NAME");
case CLUSTER_CHANGE_REGISTRY_ATTRIBUTES:
return _T("REGISTRY_ATTRIBUTES");
case CLUSTER_CHANGE_REGISTRY_VALUE:
return _T("REGISTRY_VALUE");
case CLUSTER_CHANGE_REGISTRY_SUBTREE:
return _T("REGISTRY_SUBTREE");
case CLUSTER_CHANGE_RESOURCE_STATE:
return _T("RESOURCE_STATE");
case CLUSTER_CHANGE_RESOURCE_DELETED:
return _T("RESOURCE_DELETED");
case CLUSTER_CHANGE_RESOURCE_ADDED:
return _T("RESOURCE_ADDED");
case CLUSTER_CHANGE_RESOURCE_PROPERTY:
return _T("RESOURCE_PROPERTY");
case CLUSTER_CHANGE_GROUP_STATE:
return _T("GROUP_STATE");
case CLUSTER_CHANGE_GROUP_DELETED:
return _T("GROUP_DELETED");
case CLUSTER_CHANGE_GROUP_ADDED:
return _T("GROUP_ADDED");
case CLUSTER_CHANGE_GROUP_PROPERTY:
return _T("GROUP_PROPERTY");
case CLUSTER_CHANGE_RESOURCE_TYPE_DELETED:
return _T("RESOURCE_TYPE_DELETED");
case CLUSTER_CHANGE_RESOURCE_TYPE_ADDED:
return _T("RESOURCE_TYPE_ADDED");
case CLUSTER_CHANGE_RESOURCE_TYPE_PROPERTY:
return _T("RESOURCE_TYPE_PROPERTY");
case CLUSTER_CHANGE_NETWORK_STATE:
return _T("NETWORK_STATE");
case CLUSTER_CHANGE_NETWORK_DELETED:
return _T("NETWORK_DELETED");
case CLUSTER_CHANGE_NETWORK_ADDED:
return _T("NETWORK_ADDED");
case CLUSTER_CHANGE_NETWORK_PROPERTY:
return _T("NETWORK_PROPERTY");
case CLUSTER_CHANGE_NETINTERFACE_STATE:
return _T("NETINTERFACE_STATE");
case CLUSTER_CHANGE_NETINTERFACE_DELETED:
return _T("NETINTERFACE_DELETED");
case CLUSTER_CHANGE_NETINTERFACE_ADDED:
return _T("NETINTERFACE_ADDED");
case CLUSTER_CHANGE_NETINTERFACE_PROPERTY:
return _T("NETINTERFACE_PROPERTY");
case CLUSTER_CHANGE_QUORUM_STATE:
return _T("QUORUM_STATE");
case CLUSTER_CHANGE_CLUSTER_STATE:
return _T("CLUSTER_STATE");
case CLUSTER_CHANGE_CLUSTER_PROPERTY:
return _T("CLUSTER_PROPERTY");
default:
return _T("<UNKNOWN>");
} // switch: dwNotification
} //*** PszNotificationName()
#endif // _DEBUG
/////////////////////////////////////////////////////////////////////////////
//++
//
// DeleteAllItemData
//
// Routine Description:
// Deletes all item data in a CList.
//
// Arguments:
// rlp [IN OUT] List whose data is to be deleted.
//
// Return Value:
// None.
//
//--
/////////////////////////////////////////////////////////////////////////////
void DeleteAllItemData(IN OUT CClusterNotifyList & rlp)
{
POSITION pos;
CClusterNotify * pcn;
// Delete all the items in the Contained list.
pos = rlp.GetHeadPosition();
while (pos != NULL)
{
pcn = rlp.GetNext(pos);
ASSERT(pcn != NULL);
delete pcn;
} // while: more items in the list
} //*** DeleteAllItemData()