📄 db_cxx.in
字号:
// developing a DB application - derive their application class from// this one, add application control logic.//// Note that if you use the default constructor, you must explicitly// call appinit() before any other db activity (e.g. opening files)//class _exported DbEnv{ friend class Db; friend class DbLock; friend class DbMpoolFile;public: // After using this constructor, you can set any needed // parameters for the environment using the set_* methods. // Then call open() to finish initializing the environment // and attaching it to underlying files. // DbEnv(u_int32_t flags); virtual ~DbEnv(); // These methods match those in the C interface. // virtual int close(u_int32_t); virtual int dbremove(DbTxn *txn, const char *name, const char *subdb, u_int32_t flags); virtual int dbrename(DbTxn *txn, const char *name, const char *subdb, const char *newname, u_int32_t flags); virtual void err(int, const char *, ...); virtual void errx(const char *, ...); virtual void *get_app_private() const; virtual int get_home(const char **); virtual int get_open_flags(u_int32_t *); virtual int open(const char *, u_int32_t, int); virtual int remove(const char *, u_int32_t); virtual int set_alloc(db_malloc_fcn_type, db_realloc_fcn_type, db_free_fcn_type); virtual void set_app_private(void *); virtual int get_cachesize(u_int32_t *, u_int32_t *, int *); virtual int set_cachesize(u_int32_t, u_int32_t, int); virtual int get_data_dirs(const char ***); virtual int set_data_dir(const char *); virtual int get_encrypt_flags(u_int32_t *); virtual int set_encrypt(const char *, u_int32_t); virtual void set_errcall( void (*)(const DbEnv *, const char *, const char *)); virtual void get_errfile(FILE **); virtual void set_errfile(FILE *); virtual void get_errpfx(const char **); virtual void set_errpfx(const char *); virtual int get_flags(u_int32_t *); virtual int set_flags(u_int32_t, int); virtual int set_feedback(void (*)(DbEnv *, int, int)); virtual int get_lg_bsize(u_int32_t *); virtual int set_lg_bsize(u_int32_t); virtual int get_lg_dir(const char **); virtual int set_lg_dir(const char *); virtual int get_lg_max(u_int32_t *); virtual int set_lg_max(u_int32_t); virtual int get_lg_regionmax(u_int32_t *); virtual int set_lg_regionmax(u_int32_t); virtual int get_lk_conflicts(const u_int8_t **, int *); virtual int set_lk_conflicts(u_int8_t *, int); virtual int get_lk_detect(u_int32_t *); virtual int set_lk_detect(u_int32_t); virtual int set_lk_max(u_int32_t); virtual int get_lk_max_lockers(u_int32_t *); virtual int set_lk_max_lockers(u_int32_t); virtual int get_lk_max_locks(u_int32_t *); virtual int set_lk_max_locks(u_int32_t); virtual int get_lk_max_objects(u_int32_t *); virtual int set_lk_max_objects(u_int32_t); virtual int get_mp_mmapsize(size_t *); virtual int set_mp_mmapsize(size_t); virtual void set_msgcall(void (*)(const DbEnv *, const char *)); virtual void get_msgfile(FILE **); virtual void set_msgfile(FILE *); virtual int set_paniccall(void (*)(DbEnv *, int)); virtual int set_rpc_server(void *, char *, long, long, u_int32_t); virtual int get_shm_key(long *); virtual int set_shm_key(long); virtual int get_timeout(db_timeout_t *, u_int32_t); virtual int set_timeout(db_timeout_t, u_int32_t); virtual int get_tmp_dir(const char **); virtual int set_tmp_dir(const char *); virtual int get_tas_spins(u_int32_t *); virtual int set_tas_spins(u_int32_t); virtual int get_tx_max(u_int32_t *); virtual int set_tx_max(u_int32_t); virtual int set_app_dispatch(int (*)(DbEnv *, Dbt *, DbLsn *, db_recops)); virtual int get_tx_timestamp(time_t *); virtual int set_tx_timestamp(time_t *); virtual int get_verbose(u_int32_t which, int *); virtual int set_verbose(u_int32_t which, int); // Version information. A static method so it can be obtained anytime. // static char *version(int *major, int *minor, int *patch); // Convert DB errors to strings static char *strerror(int); // If an error is detected and the error call function // or stream is set, a message is dispatched or printed. // If a prefix is set, each message is prefixed. // // You can use set_errcall() or set_errfile() above to control // error functionality. Alternatively, you can call // set_error_stream() to force all errors to a C++ stream. // It is unwise to mix these approaches. // virtual __DB_STD(ostream) *get_error_stream(); virtual void set_error_stream(__DB_STD(ostream) *); virtual __DB_STD(ostream) *get_message_stream(); virtual void set_message_stream(__DB_STD(ostream) *); // used internally static void runtime_error(DbEnv *env, const char *caller, int err, int error_policy); static void runtime_error_dbt(DbEnv *env, const char *caller, Dbt *dbt, int error_policy); static void runtime_error_lock_get(DbEnv *env, const char *caller, int err, db_lockop_t op, db_lockmode_t mode, const Dbt *obj, DbLock lock, int index, int error_policy); // Lock functions // virtual int lock_detect(u_int32_t flags, u_int32_t atype, int *aborted); virtual int lock_get(u_int32_t locker, u_int32_t flags, const Dbt *obj, db_lockmode_t lock_mode, DbLock *lock); virtual int lock_id(u_int32_t *idp); virtual int lock_id_free(u_int32_t id); virtual int lock_put(DbLock *lock); virtual int lock_stat(DB_LOCK_STAT **statp, u_int32_t flags); virtual int lock_stat_print(u_int32_t flags); virtual int lock_vec(u_int32_t locker, u_int32_t flags, DB_LOCKREQ list[], int nlist, DB_LOCKREQ **elistp); // Log functions // virtual int log_archive(char **list[], u_int32_t flags); static int log_compare(const DbLsn *lsn0, const DbLsn *lsn1); virtual int log_cursor(DbLogc **cursorp, u_int32_t flags); virtual int log_file(DbLsn *lsn, char *namep, size_t len); virtual int log_flush(const DbLsn *lsn); virtual int log_put(DbLsn *lsn, const Dbt *data, u_int32_t flags); virtual int log_stat(DB_LOG_STAT **spp, u_int32_t flags); virtual int log_stat_print(u_int32_t flags); // Mpool functions // virtual int memp_fcreate(DbMpoolFile **dbmfp, u_int32_t flags); virtual int memp_register(int ftype, pgin_fcn_type pgin_fcn, pgout_fcn_type pgout_fcn); virtual int memp_stat(DB_MPOOL_STAT **gsp, DB_MPOOL_FSTAT ***fsp, u_int32_t flags); virtual int memp_stat_print(u_int32_t flags); virtual int memp_sync(DbLsn *lsn); virtual int memp_trickle(int pct, int *nwrotep); // Transaction functions // virtual int txn_begin(DbTxn *pid, DbTxn **tid, u_int32_t flags); virtual int txn_checkpoint(u_int32_t kbyte, u_int32_t min, u_int32_t flags); virtual int txn_recover(DbPreplist *preplist, long count, long *retp, u_int32_t flags); virtual int txn_stat(DB_TXN_STAT **statp, u_int32_t flags); virtual int txn_stat_print(u_int32_t flags); // Replication functions // virtual int rep_elect(int, int, int, u_int32_t, int *, u_int32_t); virtual int rep_process_message(Dbt *, Dbt *, int *, DbLsn *); virtual int rep_start(Dbt *, u_int32_t); virtual int rep_stat(DB_REP_STAT **statp, u_int32_t flags); virtual int rep_stat_print(u_int32_t flags); virtual int get_rep_limit(u_int32_t *, u_int32_t *); virtual int set_rep_limit(u_int32_t, u_int32_t); virtual int set_rep_transport(int, int (*)(DbEnv *, const Dbt *, const Dbt *, const DbLsn *, int, u_int32_t)); // Conversion functions // virtual DB_ENV *get_DB_ENV() { return imp_; } virtual const DB_ENV *get_const_DB_ENV() const { return imp_; } static DbEnv* get_DbEnv(DB_ENV *dbenv) { return dbenv ? (DbEnv *)dbenv->api1_internal : 0; } static const DbEnv* get_const_DbEnv(const DB_ENV *dbenv) { return dbenv ? (const DbEnv *)dbenv->api1_internal : 0; } // For internal use only. static DbEnv* wrap_DB_ENV(DB_ENV *dbenv); // These are public only because they need to be called // via C functions. They should never be called by users // of this class. // static int _app_dispatch_intercept(DB_ENV *env, DBT *dbt, DB_LSN *lsn, db_recops op); static void _paniccall_intercept(DB_ENV *env, int errval); static void _feedback_intercept(DB_ENV *env, int opcode, int pct); static int _rep_send_intercept(DB_ENV *env, const DBT *cntrl, const DBT *data, const DB_LSN *lsn, int id, u_int32_t flags); static void _stream_error_function(const DB_ENV *env, const char *prefix, const char *message); static void _stream_message_function(const DB_ENV *env, const char *message);private: void cleanup(); int initialize(DB_ENV *env); int error_policy(); // For internal use only. DbEnv(DB_ENV *, u_int32_t flags); // no copying DbEnv(const DbEnv &); void operator = (const DbEnv &); // instance data DB_ENV *imp_; int construct_error_; u_int32_t construct_flags_; __DB_STD(ostream) *error_stream_; __DB_STD(ostream) *message_stream_; int (*app_dispatch_callback_)(DbEnv *, Dbt *, DbLsn *, db_recops); void (*error_callback_)(const DbEnv *, const char *, const char *); void (*feedback_callback_)(DbEnv *, int, int); void (*message_callback_)(const DbEnv *, const char *); void (*paniccall_callback_)(DbEnv *, int); int (*pgin_callback_)(DbEnv *dbenv, db_pgno_t pgno, void *pgaddr, Dbt *pgcookie); int (*pgout_callback_)(DbEnv *dbenv, db_pgno_t pgno, void *pgaddr, Dbt *pgcookie); int (*rep_send_callback_)(DbEnv *, const Dbt *, const Dbt *, const DbLsn *, int, u_int32_t);};//// Lock//class _exported DbLock{ friend class DbEnv;public: DbLock(); DbLock(const DbLock &); DbLock &operator = (const DbLock &);protected: // We can add data to this class if needed // since its contained class is not allocated by db. // (see comment at top) DbLock(DB_LOCK); DB_LOCK lock_;};//// Log cursor//class _exported DbLogc : protected DB_LOGC{ friend class DbEnv;public: int close(u_int32_t _flags); int get(DbLsn *lsn, Dbt *data, u_int32_t _flags);private: // No data is permitted in this class (see comment at top) // Note: use Db::cursor() to get pointers to a Dbc, // and call Dbc::close() rather than delete to release them. // DbLogc(); ~DbLogc(); // no copying DbLogc(const Dbc &); DbLogc &operator = (const Dbc &);};//// Log sequence number//class _exported DbLsn : public DB_LSN{ friend class DbEnv; // friendship needed to cast to base class friend class DbLogc; // friendship needed to cast to base class};//// Memory pool file//class _exported DbMpoolFile{ friend class DbEnv; friend class Db;public: int close(u_int32_t flags); int get(db_pgno_t *pgnoaddr, u_int32_t flags, void *pagep); int open(const char *file, u_int32_t flags, int mode, size_t pagesize); int get_transactional(void); int put(void *pgaddr, u_int32_t flags); int set(void *pgaddr, u_int32_t flags); int get_clear_len(u_int32_t *len); int set_clear_len(u_int32_t len); int get_fileid(u_int8_t *fileid); int set_fileid(u_int8_t *fileid); int get_flags(u_int32_t *flagsp); int set_flags(u_int32_t flags, int onoff); int get_ftype(int *ftype); int set_ftype(int ftype); int get_lsn_offset(int32_t *offsetp); int set_lsn_offset(int32_t offset); int get_maxsize(u_int32_t *gbytes, u_int32_t *bytes); int set_maxsize(u_int32_t gbytes, u_int32_t bytes); int get_pgcookie(DBT *dbt); int set_pgcookie(DBT *dbt); int get_priority(DB_CACHE_PRIORITY *priorityp); int set_priority(DB_CACHE_PRIORITY priority); int sync(); virtual DB_MPOOLFILE *get_DB_MPOOLFILE() { return imp_; } virtual const DB_MPOOLFILE *get_const_DB_MPOOLFILE() const { return imp_; }private: DB_MPOOLFILE *imp_;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -