DbEnv.java
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:11k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /*-
  2.  * See the file LICENSE for redistribution information.
  3.  *
  4.  * Copyright (c) 1997, 1998, 1999, 2000
  5.  * Sleepycat Software.  All rights reserved.
  6.  *
  7.  * $Id: DbEnv.java,v 11.25 2001/01/04 14:23:30 dda Exp $
  8.  */
  9. package com.sleepycat.db;
  10. import java.io.OutputStream;
  11. import java.io.FileNotFoundException;
  12. import java.util.Date;
  13. import java.util.Enumeration;
  14. import java.util.Vector;
  15. /**
  16.  *
  17.  * @author Donald D. Anderson
  18.  */
  19. public class DbEnv
  20. {
  21.     // methods
  22.     //
  23.     //
  24.     // After using this constructor, set any parameters via
  25.     // the set_* access methods below, and finally open
  26.     // the environment by calling open().
  27.     //
  28.     public DbEnv(int flags)
  29.     {
  30.         constructor_flags_ = flags;
  31.         _init(errstream_, constructor_flags_);
  32.     }
  33.     //
  34.     // This constructor is purposely not public.
  35.     // It is used internally to create a DbEnv wrapper
  36.     // when an underlying environment already exists.
  37.     //
  38.     /*package*/ DbEnv(Db db)
  39.     {
  40.         _init_using_db(errstream_, db);
  41.     }
  42.     //
  43.     // When a Db is created, it is kept in a private list,
  44.     // so that Db's can be notified when the environment
  45.     // is closed.  This allows us to detect and guard
  46.     // against the following situation:
  47.     //    DbEnv env = new DbEnv(0);
  48.     //    Db db = new Db(0);
  49.     //    env.close();
  50.     //    db.close();
  51.     //
  52.     // This *is* a programming error, but not protecting
  53.     // against it will crash the VM.
  54.     //
  55.     /*package*/ void _add_db(Db db)
  56.     {
  57.         dblist_.addElement(db);
  58.     }
  59.     
  60.     //
  61.     // Remove from the private list of Db's.
  62.     //
  63.     /*package*/ void _remove_db(Db db)
  64.     {
  65.         dblist_.removeElement(db);
  66.     }
  67.     
  68.     //
  69.     // Iterate all the Db's in the list, and
  70.     // notify them that the environment is closing,
  71.     // so they can clean up.
  72.     //
  73.     /*package*/ void _notify_dbs()
  74.     {
  75.         Enumeration enum = dblist_.elements();
  76.         while (enum.hasMoreElements()) {
  77.             Db db = (Db)enum.nextElement();
  78.             db._notify_dbenv_close();
  79.         }
  80.         dblist_.removeAllElements();
  81.     }
  82.     
  83.     // close discards any internal memory.
  84.     // After using close, the DbEnv can be reopened.
  85.     //
  86.     public synchronized void close(int flags)
  87.         throws DbException
  88.     {
  89.         _notify_dbs();
  90.         _close(flags);
  91.     }
  92.     // (Internal)
  93.     private native void _close(int flags)
  94.         throws DbException;
  95.     public native void err(int errcode, String message);
  96.     public native void errx(String message);
  97.     // overrides Object.finalize
  98.     protected void finalize()
  99.         throws Throwable
  100.     {
  101.         _notify_dbs();
  102.         _finalize(errcall_, errpfx_);
  103.     }
  104.     // (Internal)
  105.     protected native void _finalize(DbErrcall errcall, String errpfx)
  106.         throws Throwable;
  107.     // (Internal)
  108.     private native void _init(DbErrcall errcall, int flags);
  109.     // (Internal)
  110.     private native void _init_using_db(DbErrcall errcall, Db db);
  111.     /*package*/ native void _notify_db_close();
  112.     public native void open(String db_home, int flags, int mode)
  113.          throws DbException, FileNotFoundException;
  114.     // remove removes any files and discards any internal memory.
  115.     // (i.e. implicitly it does a close, if the environment is open).
  116.     // After using close, the DbEnv can no longer be used;
  117.     // create another one if needed.
  118.     //
  119.     public native synchronized void remove(String db_home, int flags)
  120.          throws DbException, FileNotFoundException;
  121.     ////////////////////////////////////////////////////////////////
  122.     // simple get/set access methods
  123.     //
  124.     // If you are calling set_ methods, you need to
  125.     // use the constructor with one argument along with open().
  126.     public native void set_cachesize(int gbytes, int bytes, int ncaches)
  127.          throws DbException;
  128.     // Error message callback.
  129.     public void set_errcall(DbErrcall errcall)
  130.     {
  131.         errcall_ = errcall;
  132.         _set_errcall(errcall);
  133.     }
  134.     public native void _set_errcall(DbErrcall errcall);
  135.     // Error stream.
  136.     public void set_error_stream(OutputStream s)
  137.     {
  138.         DbOutputStreamErrcall errcall = new DbOutputStreamErrcall(s);
  139.         set_errcall(errcall);
  140.     }
  141.     // Error message prefix.
  142.     public void set_errpfx(String errpfx)
  143.     {
  144.         errpfx_ = errpfx;
  145.         _set_errpfx(errpfx);
  146.     }
  147.     private native void _set_errpfx(String errpfx);
  148.     // Feedback
  149.     public void set_feedback(DbFeedback feedback)
  150.          throws DbException
  151.     {
  152.         feedback_ = feedback;
  153.         feedback_changed(feedback);
  154.     }
  155.     // (Internal)
  156.     private native void feedback_changed(DbFeedback feedback)
  157.          throws DbException;
  158.     // Generate debugging messages.
  159.     public native void set_verbose(int which, int onoff)
  160.          throws DbException;
  161.     public native void set_data_dir(String data_dir)
  162.          throws DbException;
  163.     // Log buffer size.
  164.     public native void set_lg_bsize(/*u_int32_t*/ int lg_max)
  165.          throws DbException;
  166.     // Log directory.
  167.     public native void set_lg_dir(String lg_dir)
  168.          throws DbException;
  169.     // Maximum log file size.
  170.     public native void set_lg_max(/*u_int32_t*/ int lg_max)
  171.          throws DbException;
  172.     // Two dimensional conflict matrix.
  173.     public native void set_lk_conflicts(byte[][] lk_conflicts)
  174.          throws DbException;
  175.     // Deadlock detect on every conflict.
  176.     public native void set_lk_detect(/*u_int32_t*/ int lk_detect)
  177.          throws DbException;
  178.     /**
  179.      * @deprecated DB 3.2.6, see the online documentation.
  180.      */
  181.     // Maximum number of locks.
  182.     public native void set_lk_max(/*unsigned*/ int lk_max)
  183.          throws DbException;
  184.     // Maximum number of lockers.
  185.     public native void set_lk_max_lockers(/*unsigned*/ int lk_max_lockers)
  186.          throws DbException;
  187.     // Maximum number of locks.
  188.     public native void set_lk_max_locks(/*unsigned*/ int lk_max_locks)
  189.          throws DbException;
  190.     // Maximum number of locked objects.
  191.     public native void set_lk_max_objects(/*unsigned*/ int lk_max_objects)
  192.          throws DbException;
  193.     // Maximum file size for mmap.
  194.     public native void set_mp_mmapsize(/*size_t*/ long mmapsize)
  195.          throws DbException;
  196.     public native void set_mutexlocks(int mutexlocks)
  197.          throws DbException;
  198.     public native static void set_pageyield(int pageyield)
  199.          throws DbException;
  200.     public native static void set_panicstate(int panicstate)
  201.          throws DbException;
  202.     public void set_recovery_init(DbRecoveryInit recovery_init)
  203.          throws DbException
  204.     {
  205.         recovery_init_ = recovery_init;
  206.         recovery_init_changed(recovery_init);
  207.     }
  208.     // (Internal)
  209.     private native void recovery_init_changed(DbRecoveryInit recovery_init)
  210.          throws DbException;
  211.     public native static void set_region_init(int region_init)
  212.          throws DbException;
  213.     public native void set_flags(int flags, int onoff)
  214.          throws DbException;
  215.     public native void set_server(String host, long cl_timeout,
  216.                                   long sv_timeout, int flags)
  217.          throws DbException;
  218.     public native void set_shm_key(long shm_key)
  219.          throws DbException;
  220.     public native static void set_tas_spins(int tas_spins)
  221.          throws DbException;
  222.     public native void set_tmp_dir(String tmp_dir)
  223.          throws DbException;
  224.     // Feedback
  225.     public void set_tx_recover(DbTxnRecover tx_recover)
  226.          throws DbException
  227.     {
  228.         tx_recover_ = tx_recover;
  229.         tx_recover_changed(tx_recover);
  230.     }
  231.     // (Internal)
  232.     private native void tx_recover_changed(DbTxnRecover tx_recover)
  233.          throws DbException;
  234.     // Maximum number of transactions.
  235.     public native void set_tx_max(/*unsigned*/ int tx_max)
  236.          throws DbException;
  237.     // Note: only the seconds (not milliseconds) of the timestamp
  238.     // are used in this API.
  239.     public void set_tx_timestamp(Date timestamp)
  240.          throws DbException
  241.     {
  242.         _set_tx_timestamp(timestamp.getTime()/1000);
  243.     }
  244.     // (Internal)
  245.     private native void _set_tx_timestamp(long seconds)
  246.          throws DbException;
  247.     // Versioning information
  248.     public native static int get_version_major();
  249.     public native static int get_version_minor();
  250.     public native static int get_version_patch();
  251.     public native static String get_version_string();
  252.     // Convert DB error codes to strings
  253.     public native static String strerror(int errcode);
  254.     public native int lock_detect(int flags, int atype)
  255.          throws DbException;
  256.     public native DbLock lock_get(/*u_int32_t*/ int locker,
  257.                                   int flags,
  258.                                   Dbt obj,
  259.                                   /*db_lockmode_t*/ int lock_mode)
  260.          throws DbException;
  261.     public native /*u_int32_t*/ int lock_id()
  262.          throws DbException;
  263.     public native DbLockStat lock_stat()
  264.          throws DbException;
  265.     public native String[] log_archive(int flags)
  266.          throws DbException;
  267.     public native static int log_compare(DbLsn lsn0, DbLsn lsn1);
  268.     public native String log_file(DbLsn lsn)
  269.          throws DbException;
  270.     public native void log_flush(DbLsn lsn)
  271.          throws DbException;
  272.     public native void log_get(DbLsn lsn, Dbt data, int flags)
  273.          throws DbException;
  274.     public native void log_put(DbLsn lsn, Dbt data, int flags)
  275.          throws DbException;
  276.     public native DbLogStat log_stat()
  277.          throws DbException;
  278.     public native void log_register(Db dbp, String name)
  279.          throws DbException;
  280.     public native void log_unregister(Db dbp)
  281.          throws DbException;
  282.     public native DbMpoolStat memp_stat()
  283.          throws DbException;
  284.     public native DbMpoolFStat[] memp_fstat()
  285.          throws DbException;
  286.     public native int memp_trickle(int pct)
  287.          throws DbException;
  288.     public native DbTxn txn_begin(DbTxn pid, int flags)
  289.          throws DbException;
  290.     public native int txn_checkpoint(int kbyte, int min, int flags)
  291.          throws DbException;
  292.     public native DbTxnStat txn_stat()
  293.          throws DbException;
  294.     ////////////////////////////////////////////////////////////////
  295.     //
  296.     // private data
  297.     //
  298.     private long private_dbobj_ = 0;
  299.     private long private_info_ = 0;
  300.     private int constructor_flags_ = 0;
  301.     private Vector dblist_ = new Vector();    // Db's that are open
  302.     private DbFeedback feedback_ = null;
  303.     private DbRecoveryInit recovery_init_ = null;
  304.     private DbTxnRecover tx_recover_ = null;
  305.     private DbOutputStreamErrcall errstream_ =
  306.         new DbOutputStreamErrcall(System.err);
  307.     /*package*/ DbErrcall errcall_ = errstream_;
  308.     /*package*/ String errpfx_;
  309.     static {
  310.         Db.load_db();
  311.     }
  312. }
  313. // end of DbEnv.java