mirror of https://github.com/tongzx/nt5src
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.
147 lines
3.4 KiB
147 lines
3.4 KiB
//****************************************************************************
|
|
//
|
|
// 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_
|