hxcache.h
上传用户:zhongxx05
上传日期:2007-06-06
资源大小:33641k
文件大小:25k
源码类别:

Symbian

开发平台:

C/C++

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