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

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 _HTTPFILESYS_H_
  36. #define _HTTPFILESYS_H_
  37. /****************************************************************************
  38.  * Includes
  39.  */
  40. #include "hlxclib/stdio.h"  /* FILE */
  41. #include "hlxclib/io.h"     /* struct _finddata_t, etc. */
  42. #include "hxplugn.h"        /* IHXPlugin */
  43. #include "hxfiles.h"        /* IHXFileSystemObject */
  44. #include "baseobj.h"
  45. /****************************************************************************
  46.  * Constants
  47.  */
  48. #define FILE_SYS_PROTOCOL "http"
  49. /****************************************************************************
  50.  *
  51.  *  CHXHTTPFileSystem Class
  52.  *
  53.  *  This class inherits the interfaces required to create a File System
  54.  *  plug-in. The IHXFileSystemObject interface contains methods for
  55.  *  initializing the File System object, and creating the File Object which
  56.  *  handles the actual low level file access. All plug-ins also require the
  57.  *  IHXPlugin interface in order to handle fundamental plug-in operations.
  58.  *  Since this is also a COM object, this class also inherits COM's IUnknown
  59.  *  interface to handle reference counting and interface query.
  60.  */
  61. class CHXHTTPFileSystem :  public IHXFileSystemObject,
  62.    public IHXPlugin,
  63.                            public CHXBaseCountingObject
  64. {
  65. public:
  66.     CHXHTTPFileSystem(void);
  67.     ~CHXHTTPFileSystem(void);
  68.     /************************************************************************
  69.      *  IHXFileSystemObject Interface Methods
  70.      */
  71.     STDMETHOD(GetFileSystemInfo)(THIS_ REF(const char*) pShortName,
  72.  REF(const char*) pProtocol);
  73.     STDMETHOD(InitFileSystem)   (THIS_ IHXValues* pOptions);
  74.     STDMETHOD(CreateFile    )   (THIS_ IUnknown** ppFileObject);
  75.     STDMETHOD(CreateDir     )   (THIS_ IUnknown** ppDirObject);
  76.     /************************************************************************
  77.      *  IHXPlugin Interface Methods
  78.      */
  79.     STDMETHOD(GetPluginInfo)(THIS_ REF(BOOL)  bLoadMultiple,
  80.      REF(const char*) pDescription,
  81.      REF(const char*) pCopyright,
  82.      REF(const char*) pMoreInfoURL,
  83.      REF(UINT32)      versionNumber);
  84.     STDMETHOD(InitPlugin) (THIS_ IUnknown* pContext);
  85.     /************************************************************************
  86.      *  IUnknown COM Interface Methods
  87.      */
  88.     STDMETHOD (QueryInterface ) (THIS_ REFIID ID, void** ppInterfaceObj);
  89.     STDMETHOD_(UINT32, AddRef ) (THIS);
  90.     STDMETHOD_(UINT32, Release) (THIS);
  91. private:
  92.     /****** Private Class Variables ****************************************/
  93.     INT32                    m_RefCount;       // Object's reference count
  94.     IUnknown*                m_pContext;        
  95.     IHXValues*               m_pOptions;
  96.     
  97.     /****** Private Static Class Variables *********************************/
  98.     static const char* const zm_pDescription;
  99.     static const char* const zm_pCopyright;
  100.     static const char* const zm_pMoreInfoURL;
  101.     static const char* const zm_pShortName;
  102.     static const char* const zm_pProtocol;
  103. };
  104. #endif  /* _HTTPFILESYS_H_ */