HTTP.CPP
上传用户:btxinjin
上传日期:2007-01-04
资源大小:83k
文件大小:2k
源码类别:

Web服务器

开发平台:

Visual C++

  1. // Http.cpp : structures, functions and definitions for http service
  2. //
  3. // This is a part of the Microsoft Foundation Classes C++ library.
  4. // Copyright (C) 1997-1998 Microsoft Corporation
  5. // All rights reserved.
  6. //
  7. // This source code is only intended as a supplement to the
  8. // Microsoft Foundation Classes Reference and related
  9. // electronic documentation provided with the library.
  10. // See these sources for detailed information regarding the
  11. // Microsoft Foundation Classes product.
  12. #include "stdafx.h"
  13. #include "Http.h"
  14. #include "Request.h"
  15. #include "resource.h"
  16. IMPLEMENT_DYNCREATE(CHitDoc, CObject)
  17. CHitDoc::CHitDoc( void )
  18. {
  19. }
  20. CHitDoc::CHitDoc(  CString strFile )
  21. {
  22. DWORD dwAttr = GetFileAttributes(strFile);
  23. if ( dwAttr != (DWORD)(-1) && (dwAttr&FILE_ATTRIBUTE_DIRECTORY) != 0 )
  24. m_bFolder = TRUE;
  25. else
  26. m_bFolder = FALSE;
  27. m_nHits = 0;
  28. m_dwExecute = 0;
  29. m_nStatus = -1;
  30. ParseFileName( strFile );
  31. }
  32. CHitDoc::CHitDoc( CRequest* pRequest )
  33. {
  34. m_nHits = 1; // at least one hit....
  35. // is it an executable?
  36. m_dwExecute = pRequest->m_dwExecute;
  37. // time it was hit....
  38. m_timeLastHit = pRequest->m_timeReq;
  39. // status....
  40. m_nStatus = pRequest->m_uStatus;
  41. // referring document....
  42. m_strCommand = pRequest->GetHeaderValue( "Referer" );
  43. // get the URL....
  44. m_strURL = pRequest->m_strURL;
  45. // determine file and folder names....
  46. if ( m_nStatus == 200 || (m_nStatus==0 && m_dwExecute) )
  47. {
  48. m_bFolder = ((pRequest->m_dwAttr & FILE_ATTRIBUTE_DIRECTORY) != 0);
  49. ParseFileName( pRequest->m_strFullPath );
  50. }
  51. else
  52. {
  53. m_bFolder = FALSE;
  54. m_strFile.LoadString( pRequest->m_uStatus );
  55. }
  56. }
  57. int CHitDoc::operator==( CHitDoc* pHit )
  58. {
  59. int nCmp = m_strFile.CompareNoCase( pHit->m_strFile );
  60. if ( nCmp == 0 )
  61. nCmp = m_strFolder.CompareNoCase( pHit->m_strFolder );
  62. return nCmp;
  63. }
  64. void CHitDoc::ParseFileName( const CString& strFullPath )
  65. {
  66. int nFile = strFullPath.ReverseFind( SEPCHAR );
  67. if ( nFile != -1 )
  68. {
  69. m_strFolder = strFullPath.Left( nFile+1 );
  70. m_strFile = strFullPath.Mid( nFile+1 );
  71. }
  72. }