int_cache.hpp
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:4k
源码类别:

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: int_cache.hpp,v $
  4.  * PRODUCTION Revision 1000.1  2004/06/01 19:39:17  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.5
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef UTIL___INT_CACHE__HPP
  10. #define UTIL___INT_CACHE__HPP
  11. /*  $Id: int_cache.hpp,v 1000.1 2004/06/01 19:39:17 gouriano Exp $
  12.  * ===========================================================================
  13.  *
  14.  *                            PUBLIC DOMAIN NOTICE
  15.  *               National Center for Biotechnology Information
  16.  *
  17.  *  This software/database is a "United States Government Work" under the
  18.  *  terms of the United States Copyright Act.  It was written as part of
  19.  *  the author's official duties as a United States Government employee and
  20.  *  thus cannot be copyrighted.  This software/database is freely available
  21.  *  to the public for use. The National Library of Medicine and the U.S.
  22.  *  Government have not placed any restriction on its use or reproduction.
  23.  *
  24.  *  Although all reasonable efforts have been taken to ensure the accuracy
  25.  *  and reliability of the software and data, the NLM and the U.S.
  26.  *  Government do not and cannot warrant the performance or results that
  27.  *  may be obtained by using this software or data. The NLM and the U.S.
  28.  *  Government disclaim all warranties, express or implied, including
  29.  *  warranties of performance, merchantability or fitness for any particular
  30.  *  purpose.
  31.  *
  32.  *  Please cite the author in any work or product based on this material.
  33.  *
  34.  * ===========================================================================
  35.  *
  36.  * Authors:  Anatoliy Kuznetsov
  37.  *
  38.  * File Description: Int cache interface specs.
  39.  *
  40.  */
  41. /// @file int_cache.hpp
  42. /// Int cache interface specs. 
  43. ///
  44. /// File describes interfaces used to create local cache of integer values
  45. /// addressed by 2 keys. ( Cache formula: [Int,Int] ==> vector<int> )
  46. #include <time.h>
  47. #include <vector>
  48. BEGIN_NCBI_SCOPE
  49. /// Int cache read/write/maintanance interface.
  50. ///
  51. /// IIntCache describes caching service for integer ids.
  52. /// Cache formula: [Int,Int] ==> vector<int>
  53. class IIntCache
  54. {
  55. public:
  56.     /// If to keep already cached versions of the BLOB when storing
  57.     /// another version of it (not necessarily a newer one)
  58.     /// @sa Store(), GetWriteStream()
  59.     enum EKeepVersions {
  60.         /// Do not delete other versions of the BLOB from the cache
  61.         eKeepAll,
  62.         /// Delete the earlier (than the one being stored) versions of
  63.         /// the BLOB
  64.         eDropOlder,
  65.         /// Delete all versions of the BLOB, even those which are newer
  66.         /// than the one being stored
  67.         eDropAll
  68.     };
  69.     /// Add or replace cache entry
  70.     ///
  71.     /// @param key1 
  72.     ///   Cache access key 1
  73.     /// @param key2
  74.     ///   Cache access key 2
  75.     /// @param value
  76.     ///   Cache value
  77.     virtual void Store(int key1, int key2, const vector<int>& value) = 0;
  78.     /// Get number of elements (not size in bytes!) in the cache entry
  79.     /// @return
  80.     ///   Number of elements in the cached vector, 0 if cache does not exist
  81.     virtual size_t GetSize(int key1, int key2) = 0;
  82.     /// Read cache entry.
  83.     /// @return FALSE if BLOB doesn't exist
  84.     virtual bool Read(int key1, int key2, vector<int>& value) = 0;
  85.     /// Remove cache entry
  86.     virtual void Remove(int key1, int key2) = 0;
  87.     /// Set cache item expiration timeout.
  88.     virtual void SetExpirationTime(time_t expiration_timeout) = 0;
  89.     /// Clean the cache according to the caching policy
  90.     /// (implementation dependent)
  91.     virtual void Purge(time_t           time_point,
  92.                        EKeepVersions    keep_last_version = eDropAll) = 0;
  93.     virtual ~IIntCache() {}
  94. };
  95. END_NCBI_SCOPE
  96. /*
  97.  * ===========================================================================
  98.  * $Log: int_cache.hpp,v $
  99.  * Revision 1000.1  2004/06/01 19:39:17  gouriano
  100.  * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.5
  101.  *
  102.  * Revision 1.5  2004/04/28 15:23:28  ucko
  103.  * Restore mistakenly removed files.
  104.  *
  105.  * Revision 1.3  2003/10/15 19:31:04  kuznets
  106.  * Minor fix
  107.  *
  108.  * Revision 1.2  2003/10/15 18:56:43  kuznets
  109.  * Minor comment change
  110.  *
  111.  *
  112.  * ===========================================================================
  113.  */
  114. #endif  /* UTIL___INT_CACHE__HPP */