Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

166 lines
4.7 KiB

/////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 1996-2002 Microsoft Corporation
//
// Module Name:
// Notify.h
//
// Implementation File:
// Notify.cpp
//
// Description:
// Definition of the CNotify class.
//
// Maintained By:
// David Potter (davidp) May 22, 1996
//
// Revision History:
//
// Notes:
//
/////////////////////////////////////////////////////////////////////////////
#pragma once
#ifndef _NOTIFY_H_
#define _NOTIFY_H_
/////////////////////////////////////////////////////////////////////////////
// Include Files
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// Forward Class Declarations
/////////////////////////////////////////////////////////////////////////////
class CClusterNotifyKey;
class CClusterNotify;
class CClusterNotifyContext;
/////////////////////////////////////////////////////////////////////////////
// External Class Declarations
/////////////////////////////////////////////////////////////////////////////
class CClusterDoc;
class CClusterItem;
/////////////////////////////////////////////////////////////////////////////
// ClusterNotifyKeyType
/////////////////////////////////////////////////////////////////////////////
enum ClusterNotifyKeyType
{
cnktUnknown,
cnktDoc,
cnktClusterItem
};
/////////////////////////////////////////////////////////////////////////////
// CNotifyKey
/////////////////////////////////////////////////////////////////////////////
class CClusterNotifyKey
{
public:
CClusterNotifyKey( CClusterDoc * pdocIn );
CClusterNotifyKey( CClusterItem * pciIn, LPCTSTR pszNameIn );
ClusterNotifyKeyType m_cnkt;
CString m_strName;
union
{
CClusterDoc * m_pdoc;
CClusterItem * m_pci;
};
}; //*** class CNotifyKey
typedef CList< CClusterNotifyKey *, CClusterNotifyKey * > CClusterNotifyKeyList;
/////////////////////////////////////////////////////////////////////////////
// CClusterNotify
/////////////////////////////////////////////////////////////////////////////
class CClusterNotify
{
public:
enum EMessageType
{
mtMIN = 0 // Below the minimum valid value.
, mtNotify // Normal notification message.
, mtRefresh // Request to refresh the connections.
, mtMAX // Above the maximum valid value.
};
EMessageType m_emt;
union
{
DWORD_PTR m_dwNotifyKey;
CClusterNotifyKey * m_pcnk;
};
DWORD m_dwFilterType;
CString m_strName;
CClusterNotify(
EMessageType emtIn
, DWORD_PTR dwNotifyKeyIn
, DWORD dwFilterTypeIn
, LPCWSTR pszNameIn
);
}; //*** class CClusterNotify
/////////////////////////////////////////////////////////////////////////////
// CClusterNotifyList
/////////////////////////////////////////////////////////////////////////////
class CClusterNotifyList
{
private:
// The actual list containing the data.
CList< CClusterNotify *, CClusterNotify * > m_list;
// Synchronization object to make sure only one caller is making changes to the list.
CRITICAL_SECTION m_cs;
public:
CClusterNotifyList( void );
~CClusterNotifyList( void );
POSITION Add( CClusterNotify ** ppcnNotifyInout );
CClusterNotify * Remove( void );
void RemoveAll( void );
INT_PTR GetCount( void ) const { return m_list.GetCount(); }
BOOL IsEmpty( void ) const { return m_list.IsEmpty(); }
}; //*** class CClusterNotifyList
/////////////////////////////////////////////////////////////////////////////
// CClusterNotifyContext
/////////////////////////////////////////////////////////////////////////////
class CClusterNotifyContext : public CObject
{
DECLARE_DYNAMIC( CClusterNotifyContext )
public:
HCHANGE m_hchangeNotifyPort;
HWND m_hwndFrame;
CClusterNotifyList * m_pcnlList;
}; //*** class CClusterNotifyContext
/////////////////////////////////////////////////////////////////////////////
// Global Function Prototypes
/////////////////////////////////////////////////////////////////////////////
#ifdef _DEBUG
LPCTSTR PszNotificationName( DWORD dwNotificationIn );
#endif // _DEBUG
void DeleteAllItemData( CClusterNotifyKeyList & rcnklInout );
/////////////////////////////////////////////////////////////////////////////
#endif // _NOTIFY_H_