/*++ Copyright (c) 1995-1996 Microsoft Corporation Module Name : hreqobj.cpp Abstract: This module defines the functions for CHttpRequestObject Author: Murali R. Krishnan ( MuraliK ) 5-Sept-1996 Environment: Win32 Project: Internet Application Server DLL Functions Exported: Revision History: --*/ /************************************************************ * Include Headers ************************************************************/ #include "stdafx.h" #include "hreq.h" #include "hreqobj.hxx" #include # include "dbgutil.h" /************************************************************ * Functions ************************************************************/ CHttpRequestObject::CHttpRequestObject() : m_pecb ( NULL), m_hConn ( NULL), m_fValid ( FALSE) { IF_DEBUG( OBJECT) { DBGPRINTF(( DBG_CONTEXT, "Creating CHRequestObj() ==> %08x\n", this)); } } // CHttpRequestObject::CHttpRequestObject() CHttpRequestObject::~CHttpRequestObject() { IF_DEBUG( OBJECT) { DBGPRINTF(( DBG_CONTEXT, "deleting CHttpRequestObject() ==>%08x\n", this)); } } // CHttpRequestObject::~CHttpRequestObject() STDMETHODIMP CHttpRequestObject::SetECB(IN long lpECB) { HRESULT hr = S_OK; EXTENSION_CONTROL_BLOCK * pECB = (EXTENSION_CONTROL_BLOCK * ) lpECB; DBG_ASSERT( pECB != NULL); if ( pECB == NULL) { hr = ( E_POINTER); } else { if (pECB->cbSize != sizeof(EXTENSION_CONTROL_BLOCK)) { hr = E_INVALIDARG; } else { m_pecb = pECB; m_hConn = pECB->ConnID; m_fValid = TRUE; } } IF_DEBUG( OBJECT) { DBGPRINTF(( DBG_CONTEXT, "%08x::SetECB(%08x) return %08x\n", this, lpECB, hr)); } return ( hr); } // CHttpRequestObject::SetECB() STDMETHODIMP CHttpRequestObject::GetECB( OUT long * lpECB) { EXTENSION_CONTROL_BLOCK * pECB = (EXTENSION_CONTROL_BLOCK * ) lpECB; HRESULT hr = (m_fValid) ? S_OK : E_POINTER; // // This is broken now :( // hr = E_NOTIMPL; IF_DEBUG( OBJECT) { DBGPRINTF(( DBG_CONTEXT, "%08x::GetECB(%08x) return %08x\n", this, lpECB, hr)); } return hr; } // CHttpRequestObject::GetECB() STDMETHODIMP CHttpRequestObject::WriteClient( IN int cbSize, IN unsigned char* pBuf, IN long dwReserved) /*++ This function forwards all the calls to the Original ISAPI WriteClient callback (from ECB) Arguments: cbSize - count of bytes to send to the client pBuf - pointer to Buffer containing data dwReserved - DWORD containing additional flags for transmission of data. Returns: HRESULT - indicating success/failure. --*/ { HRESULT hr = S_OK; DBG_ASSERT( m_pecb != NULL); if ( !m_fValid || !(m_pecb->WriteClient)( m_pecb->ConnID, pBuf, (LPDWORD)&cbSize, (DWORD ) dwReserved) ) { hr = E_FAIL; } IF_DEBUG( OBJECT) { DBGPRINTF(( DBG_CONTEXT, "%08x::WriteClient(%08x, cb=%d) => %08x\n", this, pBuf, cbSize, hr)); } return (hr); } // CHttpRequestObject::WriteClient() STDMETHODIMP CHttpRequestObject::GetServerVariable( IN LPCSTR pszName, IN int cbSize, OUT unsigned char* pchBuf, OUT int * pcbReturn ) { HRESULT hr = S_OK; if ( (NULL == pszName) || (NULL == pchBuf) || (NULL == pcbReturn) ) { hr = ( E_POINTER); } else { *pcbReturn = cbSize; // We should fix GetServerVariable() to take LPCSTR :( if ( !m_fValid || !(m_pecb->GetServerVariable)( m_pecb->ConnID, (LPSTR ) pszName, (LPVOID) pchBuf, (LPDWORD)pcbReturn ) ) { hr = E_FAIL; } } IF_DEBUG( OBJECT) { DBGPRINTF(( DBG_CONTEXT, "%08x::GetServerVariable(%s, cb=%d, %08x, %08x) =>" " %08x\n", this, pszName, cbSize, pchBuf, pcbReturn, hr)); } return ( hr); } // CHttpRequestObject::GetServerVariable() /************************ End of File ***********************/