Source code of Windows XP (NT5)
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.
|
|
//****************************************************************************
//
// Module: ULS.DLL
// File: request.h
// Content: Declaration CReqMgr and CRequest classes
//
// Copyright (c) Microsoft Corporation 1996-1997
//
//****************************************************************************
#ifndef _REQUEST_H_
#define _REQUEST_H_
typedef struct tagRequestInfo { DWORD dwSignature; ULONG uReqType; ULONG uMsgID; ULONG uReqID; // LPVOID pv;
// LPARAM lParam;
DWORD dwFlags; CIlsServer *pServer; CIlsMain *pMain; CIlsUser *pUser; CLocalProt *pProtocol; #ifdef ENABLE_MEETING_PLACE
CIlsMeetingPlace *pMeeting; #endif
} COM_REQ_INFO;
#define REQ_INFO_SIGNATURE 0x123456UL
VOID inline ReqInfo_Init ( COM_REQ_INFO *p ) { ZeroMemory (p, sizeof (*p)); p->dwSignature = REQ_INFO_SIGNATURE; }
BOOL inline ReqInfo_IsValid ( COM_REQ_INFO *p ) { return (p->dwSignature == REQ_INFO_SIGNATURE); }
enum { REQ_INFO_F_SERVER = 0x01, REQ_INFO_F_MAIN = 0x02, REQ_INFO_F_USER = 0x04, REQ_INFO_F_PROTOCOL = 0x08, REQ_INFO_F_MEETING = 0x10 };
VOID inline ReqInfo_SetServer ( COM_REQ_INFO *p, CIlsServer *pServer ) { ASSERT (p->pServer == NULL); p->dwFlags |= REQ_INFO_F_SERVER; p->pServer = pServer; }
VOID inline ReqInfo_SetServer ( COM_REQ_INFO *p, IIlsServer *pServer ) { ReqInfo_SetServer (p, (CIlsServer *) pServer); }
VOID inline ReqInfo_SetMain ( COM_REQ_INFO *p, CIlsMain *pMain ) { ASSERT (p->pMain == NULL); p->dwFlags |= REQ_INFO_F_MAIN; p->pMain = pMain; }
VOID inline ReqInfo_SetUser ( COM_REQ_INFO *p, CIlsUser *pUser ) { ASSERT (p->pUser == NULL); p->dwFlags |= REQ_INFO_F_USER; p->pUser = pUser; }
VOID inline ReqInfo_SetProtocol ( COM_REQ_INFO *p, CLocalProt *pProtocol ) { ASSERT (p->pProtocol == NULL); p->dwFlags |= REQ_INFO_F_PROTOCOL; p->pProtocol = pProtocol; }
VOID inline ReqInfo_SetProtocol ( COM_REQ_INFO *p, IIlsProtocol *pProtocol ) { ReqInfo_SetProtocol (p, (CLocalProt *) pProtocol); }
#ifdef ENABLE_MEETING_PLACE
VOID inline ReqInfo_SetMeeting ( COM_REQ_INFO *p, CIlsMeetingPlace *pMeeting ) { ASSERT (p->pMeeting == NULL); p->dwFlags |= REQ_INFO_F_MEETING; p->pMeeting = pMeeting; } #endif
CIlsServer inline *ReqInfo_GetServer ( COM_REQ_INFO *p ) { return ((p->dwFlags & REQ_INFO_F_SERVER) ? p->pServer : NULL); }
CIlsMain inline *ReqInfo_GetMain ( COM_REQ_INFO *p ) { return ((p->dwFlags & REQ_INFO_F_MAIN) ? p->pMain : NULL); }
CIlsUser inline *ReqInfo_GetUser ( COM_REQ_INFO *p ) { return ((p->dwFlags & REQ_INFO_F_USER) ? p->pUser : NULL); }
CLocalProt inline *ReqInfo_GetProtocol ( COM_REQ_INFO *p ) { return ((p->dwFlags & REQ_INFO_F_PROTOCOL) ? p->pProtocol : NULL); }
#ifdef ENABLE_MEETING_PLACE
CIlsMeetingPlace inline *ReqInfo_GetMeeting ( COM_REQ_INFO *p ) { return ((p->dwFlags & REQ_INFO_F_MEETING) ? p->pMeeting : NULL); } #endif
//****************************************************************************
// CReqMgr definition
//****************************************************************************
//
#define REQUEST_ID_INIT 1
class CReqMgr { private: CList ReqList; ULONG uNextReqID;
HRESULT FindRequest (COM_REQ_INFO *pri, BOOL fRemove);
public: CReqMgr (void); ~CReqMgr (void);
HRESULT NewRequest (COM_REQ_INFO *pri); HRESULT RequestDone (COM_REQ_INFO *pri) {return FindRequest(pri,TRUE);} HRESULT GetRequestInfo (COM_REQ_INFO *pri) {return FindRequest(pri,FALSE);} };
#endif // _REQUEST_H_
|