home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1996 December / PCWKCD1296.iso / vjplusb / activex / inetsdk / samples / range / callback.hpp < prev    next >
Encoding:
C/C++ Source or Header  |  1996-05-18  |  2.6 KB  |  80 lines

  1. // ===========================================================================
  2. // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
  3. // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
  4. // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  5. // PARTICULAR PURPOSE.
  6. //
  7. // Copyright 1996 Microsoft Corporation.  All Rights Reserved.
  8. // ===========================================================================
  9. #include <urlmon.h>
  10. #include "recvbuf.hpp"
  11. #include "range.h"
  12.  
  13. class CUrlmonCallback :
  14.     public IBindStatusCallback,
  15.     public IHttpNegotiate,
  16.     public RecvBuf
  17. {
  18. public:
  19.  
  20.     // IUnknown methods
  21.     STDMETHODIMP    QueryInterface(REFIID riid,void ** ppv);
  22.     STDMETHODIMP_(ULONG)    AddRef()
  23.     {
  24.         return m_cRef++;
  25.     }
  26.     STDMETHODIMP_(ULONG)    Release()
  27.     {
  28.         if (--m_cRef == 0)
  29.         {
  30.             delete this;
  31.             return 0;
  32.         }
  33.         return m_cRef;
  34.     }
  35.  
  36.     // IHttpNegotiate methods
  37.     STDMETHODIMP BeginningTransaction (LPCWSTR szURL, LPCWSTR szHeaders,
  38.         DWORD dwReserved, LPWSTR __RPC_FAR *pszAdditionalHeaders);
  39.     STDMETHODIMP OnResponse (DWORD dwResponseCode, LPCWSTR szResponseHeaders, 
  40.         LPCWSTR szRequestHeaders, LPWSTR *pszAdditionalRequestHeaders);
  41.  
  42.     // IBindStatusCallback methods
  43.     STDMETHODIMP    OnStartBinding(DWORD grfBSCOption, IBinding* pBinding);
  44.     STDMETHODIMP    GetPriority(LONG* pnPriority);
  45.     STDMETHODIMP    OnLowResource(DWORD dwReserved);
  46.     STDMETHODIMP    OnProgress(ULONG ulProgress, ULONG ulProgressMax,
  47.         ULONG ulStatusCode, LPCWSTR pwzStatusText);
  48.     STDMETHODIMP    OnStopBinding(HRESULT hrResult, LPCWSTR szError);
  49.     STDMETHODIMP    GetBindInfo(DWORD* pgrfBINDF, BINDINFO* pbindinfo);
  50.     STDMETHODIMP    OnDataAvailable(DWORD grfBSCF, DWORD dwSize,
  51.         FORMATETC *pfmtetc, STGMEDIUM* pstgmed);
  52.     STDMETHODIMP    OnObjectAvailable(REFIID riid, IUnknown* punk);
  53.  
  54.     // constructors/destructors
  55.     CUrlmonCallback (PHTTP_REQUEST_PARAM);
  56.     ~CUrlmonCallback();
  57.  
  58.     // read range processing functions
  59.     BOOL ParseMultiPartHeader (void);
  60.     HRESULT ParseMultiPartBuffer (BOOL fLastCall);
  61.     
  62.     // data members
  63.     DWORD           m_cRef;
  64.     IBinding*       m_pBinding;
  65.     IStream*        m_pstm;
  66.     DWORD           m_dwOffset;
  67.     
  68.     PHTTP_REQUEST_PARAM  m_pParam;  // initialization parameters
  69.     HTTP_REQUESTCB_PARAM m_CBParam;
  70.  
  71.     DWORD  m_dwResponseCode;
  72.  
  73.     // range variables
  74.     PSTR   m_pszRangeDelimiter;
  75.     DWORD  m_cchRangeDelimiter;
  76.     DWORD  m_dwRangeBeg;
  77.     DWORD  m_dwRangeEnd;
  78. };
  79.  
  80.