www.pudn.com > httpserve.rar > HTTP.CPP


// Http.cpp : structures, functions and definitions for http service 
// 
// This is a part of the Microsoft Foundation Classes C++ library. 
// Copyright (C) 1997-1998 Microsoft Corporation 
// All rights reserved. 
// 
// This source code is only intended as a supplement to the 
// Microsoft Foundation Classes Reference and related 
// electronic documentation provided with the library. 
// See these sources for detailed information regarding the 
// Microsoft Foundation Classes product. 
 
#include "stdafx.h" 
#include "Http.h" 
#include "Request.h" 
#include "resource.h" 
 
IMPLEMENT_DYNCREATE(CHitDoc, CObject) 
 
CHitDoc::CHitDoc( void ) 
{ 
} 
 
CHitDoc::CHitDoc(  CString strFile ) 
{ 
	DWORD dwAttr = GetFileAttributes(strFile); 
	if ( dwAttr != (DWORD)(-1) && (dwAttr&FILE_ATTRIBUTE_DIRECTORY) != 0 ) 
		m_bFolder = TRUE; 
	else 
		m_bFolder = FALSE; 
 
	m_nHits = 0; 
	m_dwExecute = 0; 
	m_nStatus = -1; 
	ParseFileName( strFile ); 
} 
 
CHitDoc::CHitDoc( CRequest* pRequest ) 
{ 
	m_nHits = 1; // at least one hit.... 
	// is it an executable? 
	m_dwExecute = pRequest->m_dwExecute; 
	// time it was hit.... 
	m_timeLastHit = pRequest->m_timeReq; 
	// status.... 
	m_nStatus = pRequest->m_uStatus; 
	// referring document.... 
	m_strCommand = pRequest->GetHeaderValue( "Referer" ); 
	// get the URL.... 
	m_strURL = pRequest->m_strURL; 
	// determine file and folder names.... 
	if ( m_nStatus == 200 || (m_nStatus==0 && m_dwExecute) ) 
	{ 
		m_bFolder = ((pRequest->m_dwAttr & FILE_ATTRIBUTE_DIRECTORY) != 0); 
		ParseFileName( pRequest->m_strFullPath ); 
	} 
	else 
	{ 
		m_bFolder = FALSE; 
		m_strFile.LoadString( pRequest->m_uStatus ); 
	} 
} 
 
int CHitDoc::operator==( CHitDoc* pHit ) 
{ 
	int nCmp = m_strFile.CompareNoCase( pHit->m_strFile ); 
	if ( nCmp == 0 ) 
		nCmp = m_strFolder.CompareNoCase( pHit->m_strFolder ); 
	return nCmp; 
} 
 
void CHitDoc::ParseFileName( const CString& strFullPath ) 
{ 
	int nFile = strFullPath.ReverseFind( SEPCHAR ); 
	if ( nFile != -1 ) 
	{ 
		m_strFolder = strFullPath.Left( nFile+1 ); 
		m_strFile = strFullPath.Mid( nFile+1 ); 
	} 
}