SBinetHttpCacheStream.hpp
上传用户:xqtpzdz
上传日期:2022-05-21
资源大小:1764k
文件大小:4k
源码类别:

xml/soap/webservice

开发平台:

Visual C++

  1. /****************License************************************************
  2.  * Vocalocity OpenVXI
  3.  * Copyright (C) 2004-2005 by Vocalocity, Inc. All Rights Reserved.
  4.  * This program is free software; you can redistribute it and/or
  5.  * modify it under the terms of the GNU General Public License
  6.  * as published by the Free Software Foundation; either version 2
  7.  * of the License, or (at your option) any later version.
  8.  *  
  9.  * This program is distributed in the hope that it will be useful,
  10.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12.  * GNU General Public License for more details.
  13.  *
  14.  * You should have received a copy of the GNU General Public License
  15.  * along with this program; if not, write to the Free Software
  16.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  17.  * Vocalocity, the Vocalocity logo, and VocalOS are trademarks or 
  18.  * registered trademarks of Vocalocity, Inc. 
  19.  * OpenVXI is a trademark of Scansoft, Inc. and used under license 
  20.  * by Vocalocity.
  21.  ***********************************************************************/
  22. #ifndef SBINETHTTPCACHESTREAM_HPP
  23. #define SBINETHTTPCACHESTREAM_HPP
  24. /**
  25.  * This class is responsible for reading information from a cache if
  26.  * available and non-expired.  Otherwise, it uses an SBinetHttpStream
  27.  * to fetch information and then caches it.
  28.  *
  29.  * @doc <p>
  30.  **/
  31. #include "SBinetStoppableStream.hpp"
  32. #include "SBinetHttpStream.hpp"
  33. #include "VXIcache.h"
  34. class SBinetChannel;
  35. class SBinetValidator;
  36. class SBinetHttpCacheStream: public SBinetStoppableStream
  37. {
  38.   // ................. CONSTRUCTORS, DESTRUCTOR  ............
  39.   //
  40.   // ------------------------------------------------------------
  41.   /**
  42.    * Default constructor.
  43.    **/
  44.  public:
  45.   SBinetHttpCacheStream(SBinetURL* url,
  46.                         SBinetHttpStream::SubmitMethod method,
  47.                         SBinetChannel* ch,
  48.                         VXIcacheInterface *cache,
  49.                         VXIlogInterface *log, VXIunsigned diagLogBase);
  50.   /**
  51.    * Destructor.
  52.    **/
  53.  public:
  54.   virtual ~SBinetHttpCacheStream();
  55.   virtual VXIinetResult Open(VXIint flags,
  56.                              const VXIMap* properties,
  57.                              VXIMap* streamInfo);
  58.   virtual VXIinetResult Read(/* [OUT] */ VXIbyte*         pBuffer,
  59.                              /* [IN]  */ VXIulong         nBuflen,
  60.                              /* [OUT] */ VXIulong*        pnRead );
  61.   virtual VXIinetResult Write(/* [IN] */ const VXIbyte*   pBuffer,
  62.                               /* [IN]  */ VXIulong         nBuflen,
  63.                               /* [OUT] */ VXIulong*        pnWritten);
  64.   virtual VXIinetResult Close();
  65.   virtual void setTimeOut(const SWITimeStamp *timeout);
  66.   /**
  67.     * Disabled copy constructor.
  68.    **/
  69.  private:
  70.   SBinetHttpCacheStream(const SBinetHttpCacheStream&);
  71.   /**
  72.     * Disabled assignment operator.
  73.    **/
  74.  private:
  75.   SBinetHttpCacheStream& operator=(const SBinetHttpCacheStream&);
  76.  private:
  77.   void setProperties(const VXIMap* properties);
  78.   VXIcacheResult openCacheRead(const VXIchar *absoluteURL, VXIMap *streamInfo);
  79.   VXIinetResult openCacheWrite(const VXIchar *absoluteURL, const VXIMap *streamInfo);
  80.   VXIcacheResult openCacheEntry(const VXIchar *absoluteURL, VXIcacheOpenMode mode, VXIMap *cacheStreamInfo);
  81.   VXIcacheResult readValidatorFromCache(SBinetURL* &ultimateURL, SBinetValidator& validator, bool &expired);
  82.   VXIcacheResult writeValidatorToCache(const SBinetURL *ultimateURL, const SBinetValidator& validator);
  83.   VXIinetResult cache2inetRc(VXIcacheResult result);
  84.  private:
  85.   bool _httpReadCompleted;
  86.   VXIint32 _maxAge;
  87.   VXIint32 _maxStale;
  88.   SBinetHttpStream *_httpStream;
  89.   SBinetChannel *_channel;
  90.   VXIcacheInterface *_cache;
  91.   VXIcacheStream *_cacheStream;
  92.   SBinetHttpStream::SubmitMethod _method;
  93. };
  94. #endif