SBcacheEntry.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. // -----1=0-------2=0-------3=0-------4=0-------5=0-------6=0-------7=0-------8
  23. #ifndef _SBCACHE_ENTRY_H__
  24. #define _SBCACHE_ENTRY_H__
  25. #include <time.h>             // for time_t
  26. #include "VXIcache.h"         // For VXIcacheResult, CACHE_[...]
  27. #include "SBcacheMisc.hpp"    // For SBcacheString, SBcacheKey, SBcachePath
  28. // Forward declarations
  29. extern "C" struct VXIlogInterface;
  30. class SBcacheEntryDetails;
  31. // SBcacheEntry, cache entry
  32. class SBcacheEntry {
  33. public:
  34.   // Constructor and destructor
  35.   SBcacheEntry( ) : _details(NULL) { }
  36.   SBcacheEntry (SBcacheEntryDetails *details);
  37.   virtual ~SBcacheEntry( );
  38.   
  39.   // Create the entry
  40.   VXIcacheResult Create(VXIlogInterface *log, 
  41. VXIunsigned diagTagBase,
  42. SBcacheMutex *refCountMutex);
  43.   // Open the entry
  44.   VXIcacheResult Open(VXIlogInterface       *log,
  45.       const SBcacheString   &moduleName,
  46.       const SBcacheKey      &key,
  47.       const SBcachePath     &path,
  48.       VXIcacheOpenMode       mode,
  49.       VXIint32               flags,
  50.       VXIulong               maxSizeBytes,
  51.       const VXIMap          *properties,
  52.       VXIMap                *streamInfo,
  53.       VXIcacheStream       **stream);
  54.   // Unlock the entry
  55.   VXIcacheResult Unlock(VXIlogInterface     *log);
  56.   // Accessors
  57.   bool IsLocked( ) const;
  58.   bool IsExpired (time_t cutoffTime, time_t *lastAccessed) const;
  59.   const SBcacheKey & GetKey( ) const;
  60.   const SBcachePath & GetPath( ) const;
  61.   VXIulong GetSizeBytes (bool haveEntryOpen = false) const;
  62.   // Error logging
  63.   VXIlogResult LogIOError (VXIunsigned errorID) const;
  64.   // Copy constructor and assignment operator
  65.   SBcacheEntry(const SBcacheEntry &entry);
  66.   SBcacheEntry &operator=(const SBcacheEntry &entry);
  67.   // Comparison operators, smaller is defined as a preference for
  68.   // deleting this entry first, equality is having equal preference
  69.   bool operator< (const SBcacheEntry &entry) const;
  70.   bool operator> (const SBcacheEntry &entry) const;
  71.   bool operator== (const SBcacheEntry &entry) const;
  72.   bool operator!= (const SBcacheEntry &entry) const;
  73.   bool Equivalent(const SBcacheEntry &other) const { return _details == other._details; }
  74. public:
  75.   // Only for SBcacheStream use
  76.   // Close
  77.   VXIcacheResult Close (VXIlogInterface  *log,
  78. VXIcacheOpenMode  mode, 
  79. VXIunsigned       sizeBytes,
  80. bool              invalidate);
  81. private:
  82.   SBcacheEntryDetails  *_details;
  83. };
  84. #endif /* include guard */