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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: bdb_env.hpp,v $
  4.  * PRODUCTION Revision 1000.3  2004/04/12 17:13:20  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [CATCHUP_003] Dev-tree R1.12
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef BDB_ENV__HPP
  10. #define BDB_ENV__HPP
  11. /* $Id: bdb_env.hpp,v 1000.3 2004/04/12 17:13:20 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.  * Author:  Anatoliy Kuznetsov
  37.  *   
  38.  * File Description: Wrapper around Berkeley DB environment
  39.  *
  40.  */
  41. /// @file bdb_env.hpp
  42. /// Wrapper around Berkeley DB environment structure
  43. #include <bdb/bdb_types.hpp>
  44. #include <stdio.h>
  45. BEGIN_NCBI_SCOPE
  46. /** @addtogroup BDB
  47.  *
  48.  * @{
  49.  */
  50. /// BDB environment object a collection including support for some or 
  51. /// all of caching, locking, logging and transaction subsystems.
  52. class NCBI_BDB_EXPORT CBDB_Env
  53. {
  54. public:
  55.     enum EEnvOptions {
  56.         eThreaded = (1 << 0)  ///< corresponds to DB_THREAD 
  57.     };
  58. public:
  59.     CBDB_Env();
  60.     /// Construct CBDB_Env taking ownership of external DB_ENV. 
  61.     ///
  62.     /// Presumed that env has been opened with all required parameters.
  63.     /// Class takes the ownership on the provided DB_ENV object.
  64.     CBDB_Env(DB_ENV* env);
  65.     ~CBDB_Env();
  66.     /// Open environment
  67.     ///
  68.     /// @param db_home destination directory for the database
  69.     /// @param flags - Berkeley DB flags (see documentation on DB_ENV->open)
  70.     void Open(const char* db_home, int flags);
  71.     /// Open environment with database locking (DB_INIT_LOCK)
  72.     ///
  73.     /// @param db_home destination directory for the database
  74.     void OpenWithLocks(const char* db_home);
  75.     /// Open environment with CDB locking (DB_INIT_CDB)
  76.     ///
  77.     /// @param db_home destination directory for the database
  78.     void OpenConcurrentDB(const char* db_home);
  79.     /// Open environment using transaction
  80.     ///
  81.     /// @param db_home destination directory for the database
  82.     void OpenWithTrans(const char* db_home);
  83.     /// Open error reporting file for the environment
  84.     ///
  85.     /// @param 
  86.     ///    file_name - name of the error file
  87.     void OpenErrFile(const char* file_name);
  88.     /// Join the existing environment
  89.     ///
  90.     /// @param 
  91.     ///    db_home destination directory for the database
  92.     /// @param 
  93.     ///    opt environment options (see EEnvOptions)
  94.     /// @sa EEnvOptions
  95.     void JoinEnv(const char* db_home, unsigned int opt = 0);
  96.     /// Return underlying DB_ENV structure pointer for low level access.
  97.     DB_ENV* GetEnv() { return m_Env; }
  98.     /// Set cache size for the environment.
  99.     void SetCacheSize(unsigned int cache_size);
  100.     
  101.     /// Start transaction (DB_ENV->txn_begin)
  102.     /// 
  103.     /// @param parent_txn
  104.     ///   Parent transaction
  105.     /// @param flags
  106.     ///   Transaction flags
  107.     /// @return 
  108.     ///   New transaction handler
  109.     DB_TXN* CreateTxn(DB_TXN* parent_txn = 0, unsigned int flags = 0);
  110.     /// Return TRUE if environment has been open as transactional
  111.     bool IsTransactional() const { return m_Transactional; }
  112.     /// Flush the underlying memory pools, logs and data bases
  113.     void TransactionCheckpoint();
  114.     /// Turn off buffering of databases (DB_DIRECT_DB)
  115.     void SetDirectDB(bool on_off);
  116.     /// Turn off buffering of log files (DB_DIRECT_LOG)
  117.     void SetDirectLog(bool on_off);
  118. private:
  119.     CBDB_Env(const CBDB_Env&);
  120.     CBDB_Env& operator=(const CBDB_Env&);
  121. private:
  122.     DB_ENV*  m_Env;
  123.     bool     m_Transactional; ///< TRUE if environment is transactional
  124.     FILE*    m_ErrFile;
  125. };
  126. /* @} */
  127. END_NCBI_SCOPE
  128. /*
  129.  * ===========================================================================
  130.  * $Log: bdb_env.hpp,v $
  131.  * Revision 1000.3  2004/04/12 17:13:20  gouriano
  132.  * PRODUCTION: UPGRADED [CATCHUP_003] Dev-tree R1.12
  133.  *
  134.  * Revision 1.12  2004/03/26 14:04:21  kuznets
  135.  * + environment functions to fine tune buffering and force
  136.  * transaction checkpoints
  137.  *
  138.  * Revision 1.11  2003/12/29 18:44:55  kuznets
  139.  * JoinEnv() added parameter to specify environment options (thread safety, etc)
  140.  *
  141.  * Revision 1.10  2003/12/29 16:15:26  kuznets
  142.  * +OpenErrFile
  143.  *
  144.  * Revision 1.9  2003/12/12 14:05:52  kuznets
  145.  * + CBDB_Env::IsTransactional
  146.  *
  147.  * Revision 1.8  2003/12/10 19:13:07  kuznets
  148.  * Added support of berkeley db transactions
  149.  *
  150.  * Revision 1.7  2003/11/24 13:49:08  kuznets
  151.  * +OpenConcurrentDB
  152.  *
  153.  * Revision 1.6  2003/11/03 13:06:55  kuznets
  154.  * + CBDB_Env::JoinEnv
  155.  *
  156.  * Revision 1.5  2003/10/20 15:23:38  kuznets
  157.  * Added cache management for BDB environment
  158.  *
  159.  * Revision 1.4  2003/09/29 14:30:22  kuznets
  160.  * Comments doxygenification
  161.  *
  162.  * Revision 1.3  2003/09/26 19:16:09  kuznets
  163.  * Documentation changes
  164.  *
  165.  * Revision 1.2  2003/08/27 15:13:53  kuznets
  166.  * Fixed DLL export spec
  167.  *
  168.  * Revision 1.1  2003/08/27 15:03:51  kuznets
  169.  * Initial revision
  170.  *
  171.  *
  172.  * ===========================================================================
  173.  */
  174. #endif  /* BDB_ENV__HPP */