2025-04-27 07:49:33 -04:00

216 lines
5.5 KiB
C++
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*++
Copyright (c) 1996 Microsoft Corporation
Module Name :
rdicto.hxx
Abstract:
Defines the implementation object for IIsaRequestDictionary objects
Author:
Murali R. Krishnan ( MuraliK ) 22-Nov-1996
Environment:
Project:
Internet Application Server DLL
Revision History:
--*/
# ifndef _RDICTO_HXX_
# define _RDICTO_HXX_
/************************************************************
* Include Headers
************************************************************/
#include "resource.h" // main symbols
#include <iisextp.h>
#if !defined( REG_DLL)
# include "navcol.hxx"
# endif // !defined(REG_DLL)
/************************************************************
* Type Definitions
************************************************************/
class CIsaRequestObject; // forward declaration
/*++
class CIsaServerVariables
o provides the Request Dictionary interface for the ServerVariables.
This provides access to all the items previously accessible by
ECB::GetServerVariable()
--*/
class CIsaServerVariables :
public IIsaRequestDictionary
{
private:
CIsaRequestObject * m_pcisaRequest; // pointer to parent object
IUnknown * m_punkOuter; // pointer to parent object
public:
CIsaServerVariables( CIsaRequestObject * pcisaReq, IUnknown * punkOuter);
~CIsaServerVariables();
BOOL Reset(VOID);
// ----------------------------------------
// IUnknown
// ----------------------------------------
STDMETHOD( QueryInterface) (const IID &Iid, void **ppvObj);
STDMETHODIMP_(ULONG) AddRef(void);
STDMETHODIMP_(ULONG) Release(void);
// ----------------------------------------
// IIsaRequestDictionary
// ----------------------------------------
STDMETHOD( Item) (
IN LPCSTR pszName,
IN unsigned long cbSize,
OUT unsigned char* pchBuf,
OUT unsigned long *pcbReturn
);
STDMETHOD( _Enum)( OUT IUnknown ** ppunkEnumReturn);
}; // class CIsaServerVariables
/*++
class CIsaQueryString
o provides the access to <name,value> in the Query String of a request.
It takes responsibility to parse the query string, construct
lookup tables etc and finally provide the access to these variables.
--*/
class CIsaQueryString :
public IIsaRequestDictionary
{
private:
CIsaRequestObject * m_pcisaRequest; // pointer to parent object
IUnknown * m_punkOuter; // pointer to parent object
#if !defined( REG_DLL)
NAVCOL m_navcol; // name value collection
#endif
BOOL m_fLoaded; // is the query string loaded?
public:
CIsaQueryString( CIsaRequestObject * pcisaReq, IUnknown * punkOuter);
~CIsaQueryString();
BOOL Reset(VOID);
// ----------------------------------------
// IUnknown
// ----------------------------------------
STDMETHOD( QueryInterface) (const IID &Iid, void **ppvObj);
STDMETHODIMP_(ULONG) AddRef(void);
STDMETHODIMP_(ULONG) Release(void);
// ----------------------------------------
// IIsaRequestDictionary
// ----------------------------------------
STDMETHOD( Item) (
IN LPCSTR pszName,
IN unsigned long cbSize,
OUT unsigned char* pchBuf,
OUT unsigned long *pcbReturn
);
STDMETHOD( _Enum)( OUT IUnknown ** ppunkEnumReturn);
private:
// ----------------------------------------
// Private Support functions
// ----------------------------------------
BOOL LoadVariables( VOID);
}; // class CIsaQueryString
/*++
class CIsaForm
o provides the access to <name,value> in the Form data received in request.
It takes responsibility to parse the form, construct
lookup tables etc and finally provide the access to these variables.
--*/
class CIsaForm :
public IIsaRequestDictionary
{
private:
CIsaRequestObject * m_pcisaRequest; // pointer to parent object
IUnknown * m_punkOuter; // pointer to parent object
#if !defined( REG_DLL)
NAVCOL m_navcol; // name value collection
BUFFER m_buffData;
DWORD m_cbTotal;
#endif
BOOL m_fLoaded; // is the query string loaded?
public:
CIsaForm( CIsaRequestObject * pcisaReq, IUnknown * punkOuter);
~CIsaForm();
BOOL Reset(VOID);
// ----------------------------------------
// IUnknown
// ----------------------------------------
STDMETHOD( QueryInterface) (const IID &Iid, void **ppvObj);
STDMETHODIMP_(ULONG) AddRef(void);
STDMETHODIMP_(ULONG) Release(void);
// ----------------------------------------
// IIsaRequestDictionary
// ----------------------------------------
STDMETHOD( Item) (
IN LPCSTR pszName,
IN unsigned long cbSize,
OUT unsigned char* pchBuf,
OUT unsigned long *pcbReturn
);
STDMETHOD( _Enum)( OUT IUnknown ** ppunkEnumReturn);
private:
// ----------------------------------------
// Private Support functions
// ----------------------------------------
BOOL LoadVariables( VOID);
}; // class CIsaForm
# endif // _RDICTO_HXX_
/************************ End of File ***********************/