📄 db_cxx.in
字号:
virtual int set_verbose(u_int32_t which, int onoff); // 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 void set_error_stream(__DB_OSTREAMCLASS *); // used internally static void runtime_error(const char *caller, int err, int error_policy); static void runtime_error_dbt(const char *caller, Dbt *dbt, int error_policy); static void runtime_error_lock_get(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_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); // 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_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); // Replication functions // virtual int rep_elect(int, int, u_int32_t, int *); virtual int rep_process_message(Dbt *, Dbt *, int *); virtual int rep_start(Dbt *, u_int32_t); virtual int rep_stat(DB_REP_STAT **statp, u_int32_t flags); virtual int set_rep_limit(u_int32_t, u_int32_t); virtual int set_rep_transport(u_int32_t, int (*)(DbEnv *, const Dbt *, const Dbt *, int, u_int32_t)); // Conversion functions // virtual DB_ENV *get_DB_ENV() { return (DB_ENV *)imp(); } virtual const DB_ENV *get_const_DB_ENV() const { return (const DB_ENV *)constimp(); } static DbEnv* get_DbEnv(DB_ENV *dbenv) { return (DbEnv *)dbenv->api1_internal; } static const DbEnv* get_const_DbEnv(const DB_ENV *dbenv) { return (const DbEnv *)dbenv->api1_internal; } // 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 void _stream_error_function(const char *, char *); 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, int id, u_int32_t flags);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 int construct_error_; u_int32_t construct_flags_; int (*app_dispatch_callback_)(DbEnv *, Dbt *, DbLsn *, db_recops); void (*feedback_callback_)(DbEnv *, int, int); 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 *, int, u_int32_t); // class data static __DB_OSTREAMCLASS *error_stream_;};//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Table access classes////// Represents a database table = a set of keys with associated values.//class _exported Db{ friend class DbEnv;private: // Put this first to allow inlining with some C++ compilers (g++-2.95) DEFINE_DB_CLASS(Db);public: Db(DbEnv*, u_int32_t); // create a Db object, then call open() virtual ~Db(); // does *not* call close. // These methods exactly match those in the C interface. // virtual int associate(DbTxn *txn, Db *secondary, int (*callback)(Db *, const Dbt *, const Dbt *, Dbt *), u_int32_t flags); virtual int close(u_int32_t flags); virtual int cursor(DbTxn *txnid, Dbc **cursorp, u_int32_t flags); virtual int del(DbTxn *txnid, Dbt *key, u_int32_t flags); virtual void err(int, const char *, ...); virtual void errx(const char *, ...); virtual int fd(int *fdp); virtual int get(DbTxn *txnid, Dbt *key, Dbt *data, u_int32_t flags); virtual void *get_app_private() const; virtual int get_byteswapped(int *); virtual int get_type(DBTYPE *); virtual int join(Dbc **curslist, Dbc **dbcp, u_int32_t flags); virtual int key_range(DbTxn *, Dbt *, DB_KEY_RANGE *, u_int32_t); virtual int open(DbTxn *txnid, const char *, const char *subname, DBTYPE, u_int32_t, int); virtual int pget(DbTxn *txnid, Dbt *key, Dbt *pkey, Dbt *data, u_int32_t flags); virtual int put(DbTxn *, Dbt *, Dbt *, u_int32_t); virtual int remove(const char *, const char *, u_int32_t); virtual int rename(const char *, const char *, 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 set_append_recno(int (*)(Db *, Dbt *, db_recno_t)); virtual int set_bt_compare(bt_compare_fcn_type); /*deprecated*/ virtual int set_bt_compare(int (*)(Db *, const Dbt *, const Dbt *)); virtual int set_bt_maxkey(u_int32_t); virtual int set_bt_minkey(u_int32_t); virtual int set_bt_prefix(bt_prefix_fcn_type); /*deprecated*/ virtual int set_bt_prefix(size_t (*)(Db *, const Dbt *, const Dbt *)); virtual int set_cachesize(u_int32_t, u_int32_t, int); virtual int set_cache_priority(DB_CACHE_PRIORITY); virtual int set_dup_compare(dup_compare_fcn_type); /*deprecated*/ virtual int set_dup_compare(int (*)(Db *, const Dbt *, const Dbt *)); virtual int set_encrypt(const char *, int); virtual void set_errcall(void (*)(const char *, char *)); virtual void set_errfile(FILE *); virtual void set_errpfx(const char *); virtual int set_feedback(void (*)(Db *, int, int)); virtual int set_flags(u_int32_t); virtual int set_h_ffactor(u_int32_t); virtual int set_h_hash(h_hash_fcn_type); /*deprecated*/ virtual int set_h_hash(u_int32_t (*)(Db *, const void *, u_int32_t)); virtual int set_h_nelem(u_int32_t); virtual int set_lorder(int); virtual int set_pagesize(u_int32_t); virtual int set_paniccall(void (*)(DbEnv *, int)); virtual int set_re_delim(int); virtual int set_re_len(u_int32_t); virtual int set_re_pad(int); virtual int set_re_source(char *); virtual int set_q_extentsize(u_int32_t); virtual int stat(void *sp, u_int32_t flags); virtual int sync(u_int32_t flags); virtual int truncate(DbTxn *, u_int32_t *, u_int32_t); virtual int upgrade(const char *name, u_int32_t flags); virtual int verify(const char *, const char *, __DB_OSTREAMCLASS *, u_int32_t); // These additional methods are not in the C interface, and // are only available for C++. // virtual void set_error_stream(__DB_OSTREAMCLASS *); virtual DB *get_DB() { return (DB *)imp(); } virtual const DB *get_const_DB() const { return (const DB *)constimp(); } static Db* get_Db(DB *db) { return (Db *)db->api_internal; } static const Db* get_const_Db(const DB *db) { return (const Db *)db->api_internal; }private: // no copying Db(const Db &); Db &operator = (const Db &); void cleanup(); int initialize(); int error_policy(); // instance data DbEnv *env_; int construct_error_; u_int32_t flags_; u_int32_t construct_flags_;public: // These are public only because they need to be called // via C callback functions. They should never be used by // external users of this class. // int (*append_recno_callback_)(Db *, Dbt *, db_recno_t); int (*associate_callback_)(Db *, const Dbt *, const Dbt *, Dbt *); int (*bt_compare_callback_)(Db *, const Dbt *, const Dbt *); size_t (*bt_prefix_callback_)(Db *, const Dbt *, const Dbt *); int (*dup_compare_callback_)(Db *, const Dbt *, const Dbt *); void (*feedback_callback_)(Db *, int, int); u_int32_t (*h_hash_callback_)(Db *, const void *, u_int32_t);};//// A chunk of data, maybe a key or value.//class _exported Dbt : private DBT{ friend class Dbc; friend class Db; friend class DbEnv; friend class DbLogc;public: // key/data void *get_data() const { return data; } void set_data(void *value) { data = value; } // key/data length u_int32_t get_size() const { return size; } void set_size(u_int32_t value) { size = value; } // RO: length of user buffer. u_int32_t get_ulen() const { return ulen; } void set_ulen(u_int32_t value) { ulen = value; } // RO: get/put record length. u_int32_t get_dlen() const { return dlen; } void set_dlen(u_int32_t value) { dlen = value; } // RO: get/put record offset. u_int32_t get_doff() const { return doff; } void set_doff(u_int32_t value) { doff = value; } // flags u_int32_t get_flags() const { return flags; } void set_flags(u_int32_t value) { flags = value; } // Conversion functions DBT *get_DBT() { return (DBT *)this; } const DBT *get_const_DBT() const { return (const DBT *)this; } static Dbt* get_Dbt(DBT *dbt) { return (Dbt *)dbt; } static const Dbt* get_const_Dbt(const DBT *dbt) { return (const Dbt *)dbt; } Dbt(void *data, u_int32_t size); Dbt(); ~Dbt(); Dbt(const Dbt &); Dbt &operator = (const Dbt &);private: // Note: no extra data appears in this class (other than // inherited from DBT) since we need DBT and Dbt objects // to have interchangable pointers. // // When subclassing this class, remember that callback // methods like bt_compare, bt_prefix, dup_compare may // internally manufacture DBT objects (which later are // cast to Dbt), so such callbacks might receive objects // not of your subclassed type.};class _exported Dbc : protected DBC{ friend class Db;public: int close(); int count(db_recno_t *countp, u_int32_t flags); int del(u_int32_t flags); int dup(Dbc** cursorp, u_int32_t flags); int get(Dbt* key, Dbt *data, u_int32_t flags); int pget(Dbt* key, Dbt* pkey, Dbt *data, u_int32_t flags); int put(Dbt* key, 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. // Dbc(); ~Dbc(); // no copying Dbc(const Dbc &); Dbc &operator = (const Dbc &);};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 &);};#endif /* !_DB_CXX_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -