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.
 
 
 
 
 
 

107 lines
3.1 KiB

//-----------------------------------------------------------------------------
//
//
// File: msgguid.h
//
// Description: Contains definitions of CAQMsgGuidList and CAQMsgGuidListEntry
// which provide functionality to supersede outdated msg ID's
//
// Author: Mike Swafford (MikeSwa)
//
// History:
// 10/10/98 - MikeSwa Created
//
// Copyright (C) 1998 Microsoft Corporation
//
//-----------------------------------------------------------------------------
#ifndef __MSGGUID_H__
#define __MSGGUID_H__
#include <cpool.h>
class CMsgRef;
class CAQMsgGuidList;
class CAQSvrInst;
#define MSGGUIDLIST_SIG ' LGM'
#define MSGGUIDLIST_ENTRY_SIG 'EgsM'
#define MSGGUIDLIST_ENTRY_SIG_INVALID 'sgM!'
//---[ CAQMsgGuidListEntry ]---------------------------------------------------
//
//
// Description:
// Entry for CAQMsgGuidList
// Hungarian:
// mgle, pmgle
//
//-----------------------------------------------------------------------------
class CAQMsgGuidListEntry : public CBaseObject
{
protected:
DWORD m_dwSignature;
CMsgRef *m_pmsgref;
LIST_ENTRY m_liMsgGuidList;
CAQMsgGuidList *m_pmgl;
GUID m_guidMsgID;
public:
static CPool s_MsgGuidListEntryPool;
void * operator new (size_t stIgnored); //should not be used
void operator delete(void *p, size_t size);
CAQMsgGuidListEntry(CMsgRef *pmsgref, GUID *pguid, PLIST_ENTRY pliHead,
CAQMsgGuidList *pmgl);
~CAQMsgGuidListEntry();
//Used by CAQMsgGuidList
static inline CAQMsgGuidListEntry * pmgleGetEntry(PLIST_ENTRY pli);
inline BOOL fCompareGuid(GUID *pguid);
inline CMsgRef *pmsgrefGetAndClearMsgRef();
//Used by CMsgRef to remove from list when done delivering msg
void RemoveFromList();
void SupersedeMsg();
};
//---[ CAQMsgGuidList ]--------------------------------------------------------
//
//
// Description:
// Class that exposes functionality to store and search for message ID's.
// Used to provide "supersedes msg ID" functionality
// Hungarian:
// mgl, pmgl
//
//-----------------------------------------------------------------------------
class CAQMsgGuidList
{
protected:
DWORD m_dwSignature;
DWORD *m_pcSupersededMsgs;
LIST_ENTRY m_liMsgGuidListHead;
CShareLockNH m_slPrivateData;
public:
CAQMsgGuidList(DWORD *pcSupersededMsgs = NULL);
~CAQMsgGuidList();
CAQMsgGuidListEntry *pmgleAddMsgGuid(CMsgRef *pmsgref,
GUID *pguidID,
GUID *pguidSuperseded);
void Deinitialize(CAQSvrInst *paqinst);
void RemoveFromList(PLIST_ENTRY pli);
};
inline void *CAQMsgGuidListEntry::operator new(size_t size)
{
return s_MsgGuidListEntryPool.Alloc();
}
inline void CAQMsgGuidListEntry::operator delete(void *p, size_t size)
{
s_MsgGuidListEntryPool.Free(p);
}
#endif //__MSGGUID_H__