hxcache.h
上传用户:dangjiwu
上传日期:2013-07-19
资源大小:42019k
文件大小:26k
源码类别:

Symbian

开发平台:

Visual C++

  1. /* ***** BEGIN LICENSE BLOCK *****
  2.  * Source last modified: $Id: hxcache.h,v 1.1.1.1.50.3 2004/07/09 01:45:08 hubbe Exp $
  3.  * 
  4.  * Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
  5.  * 
  6.  * The contents of this file, and the files included with this file,
  7.  * are subject to the current version of the RealNetworks Public
  8.  * Source License (the "RPSL") available at
  9.  * http://www.helixcommunity.org/content/rpsl unless you have licensed
  10.  * the file under the current version of the RealNetworks Community
  11.  * Source License (the "RCSL") available at
  12.  * http://www.helixcommunity.org/content/rcsl, in which case the RCSL
  13.  * will apply. You may also obtain the license terms directly from
  14.  * RealNetworks.  You may not use this file except in compliance with
  15.  * the RPSL or, if you have a valid RCSL with RealNetworks applicable
  16.  * to this file, the RCSL.  Please see the applicable RPSL or RCSL for
  17.  * the rights, obligations and limitations governing use of the
  18.  * contents of the file.
  19.  * 
  20.  * Alternatively, the contents of this file may be used under the
  21.  * terms of the GNU General Public License Version 2 or later (the
  22.  * "GPL") in which case the provisions of the GPL are applicable
  23.  * instead of those above. If you wish to allow use of your version of
  24.  * this file only under the terms of the GPL, and not to allow others
  25.  * to use your version of this file under the terms of either the RPSL
  26.  * or RCSL, indicate your decision by deleting the provisions above
  27.  * and replace them with the notice and other provisions required by
  28.  * the GPL. If you do not delete the provisions above, a recipient may
  29.  * use your version of this file under the terms of any one of the
  30.  * RPSL, the RCSL or the GPL.
  31.  * 
  32.  * This file is part of the Helix DNA Technology. RealNetworks is the
  33.  * developer of the Original Code and owns the copyrights in the
  34.  * portions it created.
  35.  * 
  36.  * This file, and the files included with this file, is distributed
  37.  * and made available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY
  38.  * KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS
  39.  * ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES
  40.  * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET
  41.  * ENJOYMENT OR NON-INFRINGEMENT.
  42.  * 
  43.  * Technology Compatibility Kit Test Suite(s) Location:
  44.  *    http://www.helixcommunity.org/content/tck
  45.  * 
  46.  * Contributor(s):
  47.  * 
  48.  * ***** END LICENSE BLOCK ***** */
  49. #ifndef _HXCACHE_H_
  50. #define _HXCACHE_H_
  51. /*
  52.  * Forward declarations of some interfaces defined herein.
  53.  */
  54. typedef _INTERFACE IHXCache IHXCache;
  55. typedef _INTERFACE IHXCacheFile IHXCacheFile;
  56. typedef _INTERFACE IHXCacheFileResponse IHXCacheFileResponse;
  57. typedef _INTERFACE IHXMIIFetch IHXMIIFetch;
  58. typedef _INTERFACE IHXFIFOCache IHXFIFOCache;
  59. // $Private:
  60. // cdist interfaces private for development, expect to make public when finalized.
  61. typedef _INTERFACE IHXContentDistribution IHXContentDistribution;
  62. typedef _INTERFACE IHXContentDistributionResponse IHXContentDistributionResponse;
  63. typedef _INTERFACE IHXContentDistributionAdvise IHXContentDistributionAdvise;
  64. typedef _INTERFACE IHXContentDistributionAdviseResponse IHXContentDistributionAdviseResponse;
  65. typedef _INTERFACE IHXMIIPullEntire IHXMIIPullEntire;
  66. typedef _INTERFACE IHXMIIPullEntireResponse IHXMIIPullEntireResponse;
  67. typedef _INTERFACE IHXCacheFileSetVersion IHXCacheFileSetVersion;
  68. typedef _INTERFACE IHXMIIReadStatCollection IHXMIIReadStatCollection;
  69. // $EndPrivate.
  70. typedef _INTERFACE IHXValues IHXValues;
  71. typedef _INTERFACE IHXBuffer IHXBuffer;
  72. typedef _INTERFACE IHXRequest IHXRequest;
  73. /****************************************************************************
  74.  * 
  75.  *  Interface:
  76.  * 
  77.  * IHXCache
  78.  * 
  79.  *  Purpose:
  80.  * 
  81.  *  IID_IHXCache:
  82.  * 
  83.  * {00002E00-0901-11d1-8B06-00A024406D59}
  84.  * 
  85.  */
  86. DEFINE_GUID(IID_IHXCache, 0x00002E00, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  87. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  88. #undef  INTERFACE
  89. #define INTERFACE   IHXCache
  90. DECLARE_INTERFACE_(IHXCache, IUnknown)
  91. {
  92.     /*
  93.      * IUnknown methods
  94.      */
  95.     STDMETHOD(QueryInterface) (THIS_
  96. REFIID riid,
  97. void** ppvObj) PURE;
  98.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  99.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  100.     /*
  101.      * IHXCache methods
  102.      */
  103.     /************************************************************************
  104.      * Method:
  105.      *     IHXCache::Init
  106.      * Purpose:
  107.      */
  108.     STDMETHOD(Init) (THIS_ IHXValues* pOptions) PURE;
  109.     /************************************************************************
  110.      * Method:
  111.      *     IHXCache::CreateCacheFile
  112.      * Purpose:
  113.      */
  114.     STDMETHOD(CreateCacheFile) (THIS_
  115. IHXCacheFile**    /*OUT*/ ppObject) PURE;
  116.     /************************************************************************
  117.      *  Method:
  118.      *     IHXCache:GetCacheInfo
  119.      */
  120.     STDMETHOD(GetCacheInfo) (THIS_
  121.     REF(const char*) /*OUT*/ pShortName) PURE;
  122. };
  123. /****************************************************************************
  124.  * 
  125.  *  Interface:
  126.  * 
  127.  * IHXCacheFile
  128.  * 
  129.  *  Purpose:
  130.  * 
  131.  * Object that exports persistent cache storage API
  132.  * 
  133.  *  IID_IHXCacheFile:
  134.  * 
  135.  * {00002E02-0901-11d1-8B06-00A024406D59}
  136.  * 
  137.  */
  138. DEFINE_GUID(IID_IHXCacheFile, 0x00002E02, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
  139. 0xa0, 0x24, 0x40, 0x6d, 0x59);
  140. #undef  INTERFACE
  141. #define INTERFACE   IHXCacheFile
  142. DECLARE_INTERFACE_(IHXCacheFile, IUnknown)
  143. {
  144.     /*
  145.      * IUnknown methods
  146.      */
  147.     STDMETHOD(QueryInterface) (THIS_
  148. REFIID riid,
  149. void** ppvObj) PURE;
  150.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  151.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  152.     /*
  153.      * IHXCacheFile methods
  154.      */
  155.     /************************************************************************
  156.      * Method:
  157.      *     IHXCacheFile::Init
  158.      * Purpose:
  159.      *     Associates a cache file object with the file response object
  160.      *     it should notify of operation completeness.
  161.      */
  162.     STDMETHOD(Init) (THIS_
  163. IHXCacheFileResponse*   /*IN*/  pFileResponse) PURE;
  164.     /************************************************************************
  165.      * Method:
  166.      *     IHXCacheFile::Open
  167.      * Purpose:
  168.      *     Opens the file for reading and writing.
  169.      */
  170.     STDMETHOD(Open) (THIS_
  171.  const char*  /*IN*/ pServerName,
  172.  const char* /*IN*/ pFileName) PURE;
  173.     /************************************************************************
  174.      * Method:
  175.      *     IHXCacheFile::Close
  176.      * Purpose:
  177.      *     Closes the file resource and releases all resources associated
  178.      *     with the object.
  179.      */
  180.     STDMETHOD(Close) (THIS) PURE;
  181.     /************************************************************************
  182.      * Method:
  183.      *     IHXCacheFile::AddBlock
  184.      * Purpose:
  185.      *     Adds a block of data to the cache
  186.      */
  187.     STDMETHOD(AddBlock) (THIS_
  188.  UINT32 /*IN*/ ulBlockOffset,
  189.  IHXBuffer* /*IN*/ pBlock) PURE;
  190.     /************************************************************************
  191.      * Method:
  192.      *     IHXCacheFile::VerifyBlock
  193.      * Purpose:
  194.      *     Verify that a block of data is in the cache.
  195.      */
  196.     STDMETHOD(VerifyBlock) (THIS_
  197.  UINT32 /*IN*/ ulBlockOffset,
  198.  UINT32 /*IN*/ ulBlockLength) PURE;
  199.     /************************************************************************
  200.      * Method:
  201.      *     IHXCacheFile::ReadBlock
  202.      * Purpose:
  203.      *     Read a block out of the cache.
  204.      */
  205.     STDMETHOD(ReadBlock) (THIS_
  206.  UINT32 /*IN*/ ulBlockOffset,
  207.  UINT32 /*IN*/ ulBlockLength) PURE;
  208.     /************************************************************************
  209.      * Method:
  210.      *     IHXCacheFile::Stat
  211.      * Purpose:
  212.      *     Obtain size and timestamp information about a cached file.
  213.      */
  214.     STDMETHOD(Stat) (THIS) PURE;
  215.     /************************************************************************
  216.      * Method:
  217.      *     IHXCacheFile::SetStat
  218.      * Purpose:
  219.      *     Store size and timestamp information for a cached file.
  220.      */
  221.     STDMETHOD(SetStat) (THIS_
  222.  UINT32 /*IN*/ ulSize,
  223.  UINT32 /*IN*/ ulCreationTime,
  224.  UINT32 /*IN*/ ulAccessTime,
  225.  UINT32 /*IN*/ ulModificationTime) PURE;
  226.     /************************************************************************
  227.      * Method:
  228.      *     IHXCacheFile::Expire
  229.      * Purpose:
  230.      *     Marks a cached file as expired; all blocks stored for the
  231.      *     file should be discarded.
  232.      */
  233.     STDMETHOD(Expire) (THIS) PURE;
  234. };
  235. /****************************************************************************
  236.  * 
  237.  *  Interface:
  238.  * 
  239.  * IHXCacheFileResponse
  240.  * 
  241.  *  Purpose:
  242.  * 
  243.  * Response interface for IHXCacheFile operations
  244.  * 
  245.  *  IID_IHXCacheFileResponse:
  246.  * 
  247.  * {00002E03-0901-11d1-8B06-00A024406D59}
  248.  * 
  249.  */
  250. DEFINE_GUID(IID_IHXCacheFileResponse, 0x00002E03, 0x901, 0x11d1, 0x8b, 0x6,
  251. 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  252. #undef  INTERFACE
  253. #define INTERFACE   IHXCacheFileResponse
  254. DECLARE_INTERFACE_(IHXCacheFileResponse, IUnknown)
  255. {
  256.     /*
  257.      * IUnknown methods
  258.      */
  259.     STDMETHOD(QueryInterface) (THIS_
  260. REFIID riid,
  261. void** ppvObj) PURE;
  262.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  263.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  264.     /*
  265.      * IHXCacheFileResponse methods
  266.      */
  267.     /************************************************************************
  268.      * Method:
  269.      *     IHXCacheFileResponse::InitDone
  270.      * Purpose:
  271.      *     Notification that IHXCacheFile::Init call has completed.
  272.      */
  273.     STDMETHOD(InitDone) (THIS_
  274.  HX_RESULT /*IN*/ status) PURE;
  275.     /************************************************************************
  276.      * Method:
  277.      *     IHXCacheFileResponse::OpenDone
  278.      * Purpose:
  279.      *     Notification that IHXCacheFile::Open operation has completed.
  280.      */
  281.     STDMETHOD(OpenDone) (THIS_
  282. HX_RESULT /*IN*/ status) PURE;
  283.     /************************************************************************
  284.      * Method:
  285.      *     IHXCacheFileResponse::CloseDone
  286.      * Purpose:
  287.      *     Notification that IHXCacheFile::Close operation has completed.
  288.      */
  289.     STDMETHOD(CloseDone) (THIS_
  290. HX_RESULT /*IN*/ status) PURE;
  291.     /************************************************************************
  292.      * Method:
  293.      *     IHXCacheFileResponse::AddBlockDone
  294.      * Purpose:
  295.      *     Notification that IHXCacheFile::AddBlock operation has completed.
  296.      */
  297.     STDMETHOD(AddBlockDone) (THIS_
  298. HX_RESULT /*IN*/ status) PURE;
  299.     /************************************************************************
  300.      * Method:
  301.      *     IHXCacheFileResponse::VerifyBlockDone
  302.      * Purpose:
  303.      *     Notification that IHXCacheFile::VerifyBlock operation has
  304.      *     completed.
  305.      */
  306.     STDMETHOD(VerifyBlockDone) (THIS_
  307. BOOL /*IN*/ bExist) PURE;
  308.     /************************************************************************
  309.      * Method:
  310.      *     IHXCacheFileResponse::ReadBlockDone
  311.      * Purpose:
  312.      *     Notification that IHXCacheFile::ReadBlock operation has
  313.      *     completed.
  314.      */
  315.     STDMETHOD(ReadBlockDone) (THIS_
  316. HX_RESULT /*IN*/ status,
  317. IHXBuffer* /*IN*/ pBuffer) PURE;
  318.     /************************************************************************
  319.      * Method:
  320.      *     IHXCacheFileResponse::StatDone
  321.      * Purpose:
  322.      *     Return size and timestamp information about a cached file.
  323.      */
  324.     STDMETHOD(StatDone) (THIS_
  325.  HX_RESULT /*IN*/ status,
  326.  UINT32 /*IN*/ ulSize,
  327.  UINT32 /*IN*/ ulCreationTime,
  328.  UINT32 /*IN*/ ulAccessTime,
  329.  UINT32 /*IN*/ ulModificationTime) PURE;
  330.     /************************************************************************
  331.      * Method:
  332.      *     IHXCacheFileResponse::SetStatDone
  333.      * Purpose:
  334.      *     Store size and timestamp information for a cached file.
  335.      *     Notification that IHXCacheFile::SetStat operation has completed.
  336.      */
  337.     STDMETHOD(SetStatDone) (THIS_
  338.  HX_RESULT /*IN*/ status) PURE;
  339.     /************************************************************************
  340.      * Method:
  341.      *     IHXCacheFileResponse::ExpireDone
  342.      * Purpose:
  343.      *     Notification that IHXCacheFile::Expire operation has completed.
  344.      */
  345.     STDMETHOD(ExpireDone) (THIS_
  346.  HX_RESULT /*IN*/ status) PURE;
  347. };
  348. /****************************************************************************
  349.  * 
  350.  *  Interface:
  351.  * 
  352.  * IHXMIIFetch
  353.  * 
  354.  *  Purpose:
  355.  * 
  356.  * For IHXCacheFile implementations to be able to request data
  357.  * independantly of the mii.
  358.  *
  359.  * You do not have to use this interface.  In fact, most people will not.
  360.  * This is only to be used if for some reason your IHXCacheFileObject
  361.  * Needs to request more data than it is already getting from mii.
  362.  * 
  363.  *  IID_IHXMIIFetch:
  364.  * 
  365.  * {00002E04-0901-11d1-8B06-00A024406D59}
  366.  * 
  367.  */
  368. DEFINE_GUID(IID_IHXMIIFetch, 0x00002E04, 0x901, 0x11d1, 0x8b, 0x6,
  369. 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  370. #undef  INTERFACE
  371. #define INTERFACE   IHXMIIFetch
  372. DECLARE_INTERFACE_(IHXMIIFetch, IUnknown)
  373. {
  374.     /*
  375.      * IUnknown methods
  376.      */
  377.     STDMETHOD(QueryInterface) (THIS_
  378. REFIID riid,
  379. void** ppvObj) PURE;
  380.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  381.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  382.     /*
  383.      * IHXMIIFetch Methods.
  384.      */
  385.     STDMETHOD(RequestRemoteBlock)   (THIS_
  386.     UINT32 ulBlockOffset,
  387.     UINT32 ulBlockLen) PURE;
  388. };
  389. /****************************************************************************
  390.  * 
  391.  *  Interface:
  392.  * 
  393.  * IHXFIFOCache
  394.  * 
  395.  *  Purpose:
  396.  * To cache objects in a temporary storage for later retrieval
  397.  * Can be created off of IHXCommonClassFactory.
  398.  * Currently supported only on the client side.
  399.  * 
  400.  *  IID_IHXFIFOCache:
  401.  * 
  402.  * {00002E05-0901-11d1-8B06-00A024406D59}
  403.  * 
  404.  */
  405. DEFINE_GUID(IID_IHXFIFOCache, 0x00002E05, 0x901, 0x11d1, 0x8b, 0x6,
  406. 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  407. #define CLSID_IHXFIFOCache IID_IHXFIFOCache
  408. #undef  INTERFACE
  409. #define INTERFACE   IHXFIFOCache
  410. DECLARE_INTERFACE_(IHXFIFOCache, IUnknown)
  411. {
  412.     /*
  413.      * IUnknown methods
  414.      */
  415.     STDMETHOD(QueryInterface) (THIS_
  416. REFIID riid,
  417. void** ppvObj) PURE;
  418.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  419.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  420.     /*
  421.      * IHXFIFOCache methods
  422.      */
  423.     /************************************************************************
  424.      * Method:
  425.      * IHXFIFOCache::Cache
  426.      * Purpose:
  427.      *     To cache objects in a temporary storage for later retrieval
  428.      *
  429.      *     Currently supported objects:
  430.      * IHXBuffer
  431.      * IHXValues
  432.      * IHXPacket
  433. // $Private:
  434.      * IHXTimeStampedBuffer
  435. // $EndPrivate.
  436.      *
  437.      */
  438.     STDMETHOD(Cache) (THIS_
  439.  IUnknown*     pObject) PURE;
  440.     /************************************************************************
  441.      * Method:
  442.      *     IHXFIFOCache::Retrieve
  443.      * Purpose:
  444.      *
  445.      *
  446.      */
  447.     STDMETHOD(Retrieve)     (THIS_
  448.     REF(IUnknown*)  pObject) PURE;
  449.     /************************************************************************
  450.      * Method:
  451.      *     IHXFIFOCache::Flush
  452.      * Purpose:
  453.      *
  454.      *
  455.      */
  456.     STDMETHOD(Flush)     (THIS) PURE;
  457. };
  458. // $Private:
  459. /****************************************************************************
  460.  * 
  461.  *  Interface:
  462.  * 
  463.  * IHXContentDistribution
  464.  * 
  465.  *  Purpose:
  466.  * Content distribution services, usually coordinated across all servers
  467.  * at a site.
  468.  * 
  469.  *  IID_IHXContentDistribution:
  470.  * 
  471.  * {00002E06-0901-11d1-8B06-00A024406D59}
  472.  * 
  473.  */
  474. DEFINE_GUID(IID_IHXContentDistribution, 0x00002E06, 0x901, 0x11d1, 0x8b, 0x6,
  475. 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  476. #define CLSID_IHXContentDistribution IID_IHXContentDistribution
  477. #undef  INTERFACE
  478. #define INTERFACE   IHXContentDistribution
  479. DECLARE_INTERFACE_(IHXContentDistribution, IUnknown)
  480. {
  481.     /*
  482.      * IUnknown methods
  483.      */
  484.     STDMETHOD(QueryInterface) (THIS_
  485. REFIID riid,
  486. void** ppvObj) PURE;
  487.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  488.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  489.     /*
  490.      * IHXContentDistribution methods
  491.      */
  492.     /************************************************************************
  493.      * Method:
  494.      * IHXContentDistribution::
  495.      * Purpose:
  496.      *
  497.      *
  498.      */
  499.     STDMETHOD(URLExists) (THIS_
  500.  const char* pPath,
  501.  IHXContentDistributionResponse* pResp) PURE;
  502.     STDMETHOD(RequestBlocks)     (THIS) PURE;
  503.     STDMETHOD(OnFetchedBlocks)     (THIS) PURE;
  504.     STDMETHOD(OnCachePurge)     (THIS) PURE;
  505. };
  506. /****************************************************************************
  507.  * 
  508.  *  Interface:
  509.  * 
  510.  * IHXContentDistributionResponse
  511.  * 
  512.  *  Purpose:
  513.  * Content distribution service replies.
  514.  * 
  515.  *  IID_IHXContentDistributionResponse:
  516.  * 
  517.  * {00002E07-0901-11d1-8B06-00A024406D59}
  518.  * 
  519.  */
  520. DEFINE_GUID(IID_IHXContentDistributionResponse, 0x00002E07, 0x901, 0x11d1, 0x8b, 0x6,
  521. 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  522. #define CLSID_IHXContentDistributionResponse IID_IHXContentDistributionResponse
  523. #undef  INTERFACE
  524. #define INTERFACE   IHXContentDistributionResponse
  525. DECLARE_INTERFACE_(IHXContentDistributionResponse, IUnknown)
  526. {
  527.     /*
  528.      * IUnknown methods
  529.      */
  530.     STDMETHOD(QueryInterface) (THIS_
  531. REFIID riid,
  532. void** ppvObj) PURE;
  533.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  534.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  535.     /*
  536.      * IHXContentDistributionResponse methods
  537.      */
  538.     /************************************************************************
  539.      * Method:
  540.      * IHXContentDistribution::
  541.      * Purpose:
  542.      *
  543.      *
  544.      */
  545.     STDMETHOD(URLExistsDone) (THIS_
  546.  BOOL bExists) PURE;
  547.     STDMETHOD(RequestBlocksDone) (THIS) PURE;
  548.     STDMETHOD(OnFetchedBlocksDone) (THIS) PURE;
  549.     STDMETHOD(OnCachePurgeDone)      (THIS) PURE;
  550. };
  551. /****************************************************************************
  552.  * 
  553.  *  Interface:
  554.  * 
  555.  * IHXContentDistributionAdvise
  556.  * 
  557.  *  Purpose:
  558.  * Allowance-like advise sink, for content-distribution cache
  559.  * requests.
  560.  * 
  561.  *  IID_IHXContentDistributionAdvise:
  562.  * 
  563.  * {00002E08-0901-11d1-8B06-00A024406D59}
  564.  * 
  565.  */
  566. DEFINE_GUID(IID_IHXContentDistributionAdvise, 0x00002E08, 0x901, 0x11d1, 0x8b, 0x6,
  567. 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  568. #define CLSID_IHXContentDistributionAdvise IID_IHXContentDistributionAdvise
  569. #undef  INTERFACE
  570. #define INTERFACE   IHXContentDistributionAdvise
  571. DECLARE_INTERFACE_(IHXContentDistributionAdvise, IUnknown)
  572. {
  573.     /*
  574.      * IUnknown methods
  575.      */
  576.     STDMETHOD(QueryInterface) (THIS_
  577. REFIID riid,
  578. void** ppvObj) PURE;
  579.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  580.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  581.     /*
  582.      * IHXContentDistributionAdvise methods
  583.      */
  584.     /************************************************************************
  585.      * Method:
  586.      * IHXContentDistributionAdvise::
  587.      * Purpose:
  588.      *
  589.      *
  590.      */
  591.     STDMETHOD(GetPriority) (THIS_
  592.  REF(INT32) lPriority) PURE;
  593.     STDMETHOD(OnLocalResult) (THIS_
  594.  IHXContentDistributionAdviseResponse* pResp,
  595.  IHXRequest* pRequest,
  596.  BOOL bFound) PURE;
  597.     STDMETHOD(OnCacheRequest) (THIS_
  598.  IHXContentDistributionAdviseResponse* pResp,
  599.  IHXRequest* pRequest) PURE;
  600.     STDMETHOD(OnCacheResult) (THIS_
  601.  IHXContentDistributionAdviseResponse* pResp,
  602.  IHXRequest* pRequest,
  603.  BOOL bFound) PURE;
  604.     STDMETHOD(OnSiteCacheResult) (THIS_
  605.  IHXContentDistributionAdviseResponse* pResp,
  606.  IHXRequest* pRequest,
  607.  BOOL bFound) PURE;
  608.     STDMETHOD(OnPurgeCacheURL) (THIS_
  609.  IHXContentDistributionAdviseResponse* pResp,
  610.  IHXBuffer* pURL,
  611.  IHXValues* pAdditional) PURE;
  612. };
  613. /****************************************************************************
  614.  * 
  615.  *  Interface:
  616.  * 
  617.  * IHXContentDistributionAdviseResponse
  618.  * 
  619.  *  Purpose:
  620.  * Responses for IHXContentDistributionAdvise
  621.  * 
  622.  *  IID_IHXContentDistributionAdviseResponse:
  623.  * 
  624.  * {00002E09-0901-11d1-8B06-00A024406D59}
  625.  * 
  626.  */
  627. DEFINE_GUID(IID_IHXContentDistributionAdviseResponse, 0x00002E09, 0x901, 0x11d1, 0x8b, 0x6,
  628. 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  629. #define CLSID_IHXContentDistributionAdviseResponse IID_IHXContentDistributionAdviseResponse
  630. #undef  INTERFACE
  631. #define INTERFACE   IHXContentDistributionAdviseResponse
  632. DECLARE_INTERFACE_(IHXContentDistributionAdviseResponse, IUnknown)
  633. {
  634.     /*
  635.      * IUnknown methods
  636.      */
  637.     STDMETHOD(QueryInterface) (THIS_
  638. REFIID riid,
  639. void** ppvObj) PURE;
  640.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  641.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  642.     /*
  643.      * IHXContentDistributionAdviseResponse methods
  644.      */
  645.     /************************************************************************
  646.      * Method:
  647.      * IHXContentDistributionAdviseResponse::
  648.      * Purpose:
  649.      *
  650.      *
  651.      */
  652.     STDMETHOD(OnLocalResultDone) (THIS_
  653.  HX_RESULT status) PURE;
  654.     STDMETHOD(OnCacheRequestDone) (THIS_
  655.  HX_RESULT status) PURE;
  656.     STDMETHOD(OnCacheResultDone) (THIS_
  657.  HX_RESULT status) PURE;
  658.     STDMETHOD(OnSiteCacheResultDone) (THIS_
  659.  HX_RESULT status) PURE;
  660.     STDMETHOD(OnPurgeCacheURLDone) (THIS_
  661.  HX_RESULT status) PURE;
  662. };
  663. /****************************************************************************
  664.  * 
  665.  *  Interface:
  666.  * 
  667.  * IHXMIIPullEntire
  668.  * 
  669.  *  Purpose:
  670.  * Interface to instruct MII to pull down entire file
  671.  * 
  672.  *  IID_IHXMIIPullEntire
  673.  * 
  674.  * {00002E0A-0901-11d1-8B06-00A024406D59}
  675.  * 
  676.  */
  677. DEFINE_GUID(IID_IHXMIIPullEntire, 0x00002E0A, 0x901, 0x11d1, 0x8b, 0x6,
  678. 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  679. #define CLSID_IHXMIIPullEntire IID_IHXMIIPullEntire
  680. #undef  INTERFACE
  681. #define INTERFACE   IHXMIIPullEntire
  682. DECLARE_INTERFACE_(IHXMIIPullEntire, IUnknown)
  683. {
  684.     /*
  685.      * IUnknown methods
  686.      */
  687.     STDMETHOD(QueryInterface) (THIS_
  688. REFIID riid,
  689. void** ppvObj) PURE;
  690.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  691.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  692.     /*
  693.      * IHXMIIPullEntire methods
  694.      */
  695.     /************************************************************************
  696.      * Method:
  697.      * IHXMIIPullEntire::
  698.      * Purpose:
  699.      *
  700.      *
  701.      */
  702.     STDMETHOD(PullEntireFile) (THIS_
  703.  IHXMIIPullEntireResponse* pResp) PURE;
  704.     STDMETHOD(PullEntireFileCancel) (THIS) PURE;
  705. };
  706. /****************************************************************************
  707.  * 
  708.  *  Interface:
  709.  * 
  710.  * IHXMIIPullEntireResponse
  711.  * 
  712.  *  Purpose:
  713.  * Callback when file is completely pulled down.
  714.  * 
  715.  *  IID_IHXMIIPullEntireResponse
  716.  * 
  717.  * {00002E0B-0901-11d1-8B06-00A024406D59}
  718.  * 
  719.  */
  720. DEFINE_GUID(IID_IHXMIIPullEntireResponse, 0x00002E0B, 0x901, 0x11d1, 0x8b, 0x6,
  721. 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  722. #define CLSID_IHXMIIPullEntireResponse IID_IHXMIIPullEntireResponse
  723. #undef  INTERFACE
  724. #define INTERFACE   IHXMIIPullEntireResponse
  725. DECLARE_INTERFACE_(IHXMIIPullEntireResponse, IUnknown)
  726. {
  727.     /*
  728.      * IUnknown methods
  729.      */
  730.     STDMETHOD(QueryInterface) (THIS_
  731. REFIID riid,
  732. void** ppvObj) PURE;
  733.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  734.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  735.     /*
  736.      * IHXMIIPullEntireResponse methods
  737.      */
  738.     /************************************************************************
  739.      * Method:
  740.      * IHXMIIPullEntireResponse::
  741.      * Purpose:
  742.      *
  743.      *
  744.      */
  745.     STDMETHOD(PullEntireFileDone) (THIS_
  746.  HX_RESULT status) PURE;
  747. };
  748. /****************************************************************************
  749.  * 
  750.  *  Interface:
  751.  * 
  752.  * IHXCacheFileSetVersion
  753.  * 
  754.  *  Purpose:
  755.  * Interface to request a specific version of a cache file
  756.  * 
  757.  *  IID_IHXCacheFileSetVersion
  758.  * 
  759.  * {00002E0C-0901-11d1-8B06-00A024406D59}
  760.  * 
  761.  */
  762. DEFINE_GUID(IID_IHXCacheFileSetVersion, 0x00002E0C, 0x901, 0x11d1, 0x8b, 0x6,
  763. 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  764. #define CLSID_IHXCacheFileSetVersion IID_IHXCacheFileSetVersion
  765. #undef  INTERFACE
  766. #define INTERFACE   IHXCacheFileSetVersion
  767. DECLARE_INTERFACE_(IHXCacheFileSetVersion, IUnknown)
  768. {
  769.     /*
  770.      * IUnknown methods
  771.      */
  772.     STDMETHOD(QueryInterface) (THIS_
  773. REFIID riid,
  774. void** ppvObj) PURE;
  775.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  776.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  777.     /*
  778.      * IHXCacheFileSetVersion methods
  779.      */
  780.     /************************************************************************
  781.      * Method:
  782.      * CacheFileSetVersion::
  783.      * Purpose:
  784.      *
  785.      *
  786.      */
  787.     STDMETHOD(CacheFileSetVersion) (THIS_
  788.  UINT32 ulVersion) PURE;
  789. };
  790. /****************************************************************************
  791.  * 
  792.  *  Interface:
  793.  * 
  794.  * IHXMIIReadStatCollection
  795.  * 
  796.  *  Purpose:
  797.  * Interface to request a file object start collecting read stats for 
  798.  * CDist/MII
  799.  * 
  800.  *  IHXMIIReadStatCollection
  801.  * 
  802.  * {00002E0D-0901-11d1-8B06-00A024406D59}
  803.  * 
  804.  */
  805. DEFINE_GUID(IID_IHXMIIReadStatCollection, 0x00002E0D, 0x901, 0x11d1, 0x8b, 0x6,
  806. 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
  807. #define CLSID_IHXMIIReadStatCollection IID_IHXMIIReadStatCollection
  808. #undef  INTERFACE
  809. #define INTERFACE   IHXMIIReadStatCollection
  810. DECLARE_INTERFACE_(IHXMIIReadStatCollection, IUnknown)
  811. {
  812.     /*
  813.      * IUnknown methods
  814.      */
  815.     STDMETHOD(QueryInterface) (THIS_
  816. REFIID riid,
  817. void** ppvObj) PURE;
  818.     STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
  819.     STDMETHOD_(ULONG32,Release) (THIS) PURE;
  820.     /*
  821.      * IHXMIIReadStatCollection methods
  822.      */
  823.     /************************************************************************
  824.      * Method:
  825.      * SetMIIReadStatsEnabled()
  826.      * Purpose:
  827.      *
  828.      */
  829.     STDMETHOD(SetMIIReadStatsEnabled) (THIS_
  830.  BOOL bEnabled,
  831.  BOOL* bOldValue) PURE;
  832.     STDMETHOD(GetMIIReadStatsEnabled) (THIS_
  833.  REF(BOOL) bEnabled) PURE;
  834. };
  835. // $EndPrivate.
  836. #endif  /* _HXCACHE_H_ */