⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cxx_env.cpp

📁 这是国外的resip协议栈
💻 CPP
📖 第 1 页 / 共 2 页
字号:
{	int ret;	DB_ENV *env = unwrap(this);	// after a remove (no matter if success or failure),	// the underlying DB_ENV object must not be accessed,	// so we clean up in advance.	//	cleanup();	if ((ret = env->remove(env, db_home, flags)) != 0)		DB_ERROR(this, "DbEnv::remove", ret, error_policy());	return (ret);}// Report an error associated with the DbEnv.// error_policy is one of://   ON_ERROR_THROW     throw an error//   ON_ERROR_RETURN    do nothing here, the caller will return an error//   ON_ERROR_UNKNOWN   defer the policy to policy saved in DbEnv::DbEnv//void DbEnv::runtime_error(DbEnv *env,    const char *caller, int error, int error_policy){	if (error_policy == ON_ERROR_UNKNOWN)		error_policy = last_known_error_policy;	if (error_policy == ON_ERROR_THROW) {		// Creating and throwing the object in two separate		// statements seems to be necessary for HP compilers.		switch (error) {		case DB_LOCK_DEADLOCK:			{				DbDeadlockException dl_except(caller);				dl_except.set_env(env);				throw dl_except;			}			break;		case DB_RUNRECOVERY:			{				DbRunRecoveryException rr_except(caller);				rr_except.set_env(env);				throw rr_except;			}			break;		case DB_LOCK_NOTGRANTED:			{				DbLockNotGrantedException lng_except(caller);				lng_except.set_env(env);				throw lng_except;			}			break;		default:			{				DbException except(caller, error);				except.set_env(env);				throw except;			}			break;		}	}}// Like DbEnv::runtime_error, but issue a DbMemoryException// based on the fact that this Dbt is not large enough.void DbEnv::runtime_error_dbt(DbEnv *env,    const char *caller, Dbt *dbt, int error_policy){	if (error_policy == ON_ERROR_UNKNOWN)		error_policy = last_known_error_policy;	if (error_policy == ON_ERROR_THROW) {		// Creating and throwing the object in two separate		// statements seems to be necessary for HP compilers.		DbMemoryException except(caller, dbt);		except.set_env(env);		throw except;	}}// Like DbEnv::runtime_error, but issue a DbLockNotGrantedException,// or a regular runtime error.// call regular runtime_error if itvoid DbEnv::runtime_error_lock_get(DbEnv *env,    const char *caller, int error,    db_lockop_t op, db_lockmode_t mode, const Dbt *obj,    DbLock lock, int index, int error_policy){	if (error != DB_LOCK_NOTGRANTED) {		runtime_error(env, caller, error, error_policy);		return;	}	if (error_policy == ON_ERROR_UNKNOWN)		error_policy = last_known_error_policy;	if (error_policy == ON_ERROR_THROW) {		// Creating and throwing the object in two separate		// statements seems to be necessary for HP compilers.		DbLockNotGrantedException except(caller, op, mode,		    obj, lock, index);		except.set_env(env);		throw except;	}}void DbEnv::_stream_error_function(    const DB_ENV *env, const char *prefix, const char *message){	const DbEnv *cxxenv = DbEnv::get_const_DbEnv(env);	if (cxxenv == 0) {		DB_ERROR(0,		    "DbEnv::stream_error", EINVAL, ON_ERROR_UNKNOWN);		return;	}	if (cxxenv->error_callback_)		cxxenv->error_callback_(cxxenv, prefix, message);	else if (cxxenv->error_stream_) {		// HP compilers need the extra casts, we don't know why.		if (prefix) {			(*cxxenv->error_stream_) << prefix;			(*cxxenv->error_stream_) << (const char *)": ";		}		if (message)			(*cxxenv->error_stream_) << (const char *)message;		(*cxxenv->error_stream_) << (const char *)"\n";	}}void DbEnv::_stream_message_function(const DB_ENV *env, const char *message){	const DbEnv *cxxenv = DbEnv::get_const_DbEnv(env);	if (cxxenv == 0) {		DB_ERROR(0,		    "DbEnv::stream_message", EINVAL, ON_ERROR_UNKNOWN);		return;	}	if (cxxenv->message_callback_)		cxxenv->message_callback_(cxxenv, message);	else if (cxxenv->message_stream_) {		// HP compilers need the extra casts, we don't know why.		(*cxxenv->message_stream_) << (const char *)message;		(*cxxenv->message_stream_) << (const char *)"\n";	}}// static methodchar *DbEnv::strerror(int error){	return (db_strerror(error));}// We keep these alphabetical by field name,// for comparison with Java's list.//DBENV_METHOD(set_data_dir, (const char *dir), (dbenv, dir))DBENV_METHOD(get_encrypt_flags, (u_int32_t *flagsp),    (dbenv, flagsp))DBENV_METHOD(set_encrypt, (const char *passwd, u_int32_t flags),    (dbenv, passwd, flags))DBENV_METHOD_VOID(get_errfile, (FILE **errfilep), (dbenv, errfilep))DBENV_METHOD_VOID(set_errfile, (FILE *errfile), (dbenv, errfile))DBENV_METHOD_VOID(get_errpfx, (const char **errpfxp), (dbenv, errpfxp))DBENV_METHOD_VOID(set_errpfx, (const char *errpfx), (dbenv, errpfx))DBENV_METHOD(get_lg_bsize, (u_int32_t *bsizep), (dbenv, bsizep))DBENV_METHOD(set_lg_bsize, (u_int32_t bsize), (dbenv, bsize))DBENV_METHOD(get_lg_dir, (const char **dirp), (dbenv, dirp))DBENV_METHOD(set_lg_dir, (const char *dir), (dbenv, dir))DBENV_METHOD(get_lg_max, (u_int32_t *maxp), (dbenv, maxp))DBENV_METHOD(set_lg_max, (u_int32_t max), (dbenv, max))DBENV_METHOD(get_lg_regionmax, (u_int32_t *regionmaxp), (dbenv, regionmaxp))DBENV_METHOD(set_lg_regionmax, (u_int32_t regionmax), (dbenv, regionmax))DBENV_METHOD(get_lk_conflicts, (const u_int8_t **lk_conflictsp, int *lk_maxp),    (dbenv, lk_conflictsp, lk_maxp))DBENV_METHOD(set_lk_conflicts, (u_int8_t *lk_conflicts, int lk_max),    (dbenv, lk_conflicts, lk_max))DBENV_METHOD(get_lk_detect, (u_int32_t *detectp), (dbenv, detectp))DBENV_METHOD(set_lk_detect, (u_int32_t detect), (dbenv, detect))DBENV_METHOD(set_lk_max, (u_int32_t max), (dbenv, max))DBENV_METHOD(get_lk_max_lockers, (u_int32_t *max_lockersp),    (dbenv, max_lockersp))DBENV_METHOD(set_lk_max_lockers, (u_int32_t max_lockers), (dbenv, max_lockers))DBENV_METHOD(get_lk_max_locks, (u_int32_t *max_locksp), (dbenv, max_locksp))DBENV_METHOD(set_lk_max_locks, (u_int32_t max_locks), (dbenv, max_locks))DBENV_METHOD(get_lk_max_objects, (u_int32_t *max_objectsp),    (dbenv, max_objectsp))DBENV_METHOD(set_lk_max_objects, (u_int32_t max_objects), (dbenv, max_objects))DBENV_METHOD(get_mp_mmapsize, (size_t *mmapsizep), (dbenv, mmapsizep))DBENV_METHOD(set_mp_mmapsize, (size_t mmapsize), (dbenv, mmapsize))DBENV_METHOD_VOID(get_msgfile, (FILE **msgfilep), (dbenv, msgfilep))DBENV_METHOD_VOID(set_msgfile, (FILE *msgfile), (dbenv, msgfile))DBENV_METHOD(get_tmp_dir, (const char **tmp_dirp), (dbenv, tmp_dirp))DBENV_METHOD(set_tmp_dir, (const char *tmp_dir), (dbenv, tmp_dir))DBENV_METHOD(get_tx_max, (u_int32_t *tx_maxp), (dbenv, tx_maxp))DBENV_METHOD(set_tx_max, (u_int32_t tx_max), (dbenv, tx_max))DBENV_METHOD_QUIET(set_alloc,    (db_malloc_fcn_type malloc_fcn, db_realloc_fcn_type realloc_fcn,    db_free_fcn_type free_fcn),    (dbenv, malloc_fcn, realloc_fcn, free_fcn))void DbEnv::set_app_private(void *value){	unwrap(this)->app_private = value;}DBENV_METHOD(get_cachesize,    (u_int32_t *gbytesp, u_int32_t *bytesp, int *ncachep),    (dbenv, gbytesp, bytesp, ncachep))DBENV_METHOD(set_cachesize,    (u_int32_t gbytes, u_int32_t bytes, int ncache),    (dbenv, gbytes, bytes, ncache))void DbEnv::set_errcall(void (*arg)(const DbEnv *, const char *, const char *)){	DB_ENV *dbenv = unwrap(this);	error_callback_ = arg;	error_stream_ = 0;	dbenv->set_errcall(dbenv, (arg == 0) ? 0 :			   _stream_error_function_c);}__DB_STD(ostream) *DbEnv::get_error_stream(){	return (error_stream_);}void DbEnv::set_error_stream(__DB_STD(ostream) *stream){	DB_ENV *dbenv = unwrap(this);	error_stream_ = stream;	error_callback_ = 0;	dbenv->set_errcall(dbenv, (stream == 0) ? 0 :			   _stream_error_function_c);}int DbEnv::set_feedback(void (*arg)(DbEnv *, int, int)){	DB_ENV *dbenv = unwrap(this);	feedback_callback_ = arg;	return (dbenv->set_feedback(dbenv, _feedback_intercept_c));}DBENV_METHOD(get_flags, (u_int32_t *flagsp), (dbenv, flagsp))DBENV_METHOD(set_flags, (u_int32_t flags, int onoff), (dbenv, flags, onoff))void DbEnv::set_msgcall(void (*arg)(const DbEnv *, const char *)){	DB_ENV *dbenv = unwrap(this);	message_callback_ = arg;	message_stream_ = 0;	dbenv->set_msgcall(dbenv, (arg == 0) ? 0 :			   _stream_message_function_c);}__DB_STD(ostream) *DbEnv::get_message_stream(){	return (message_stream_);}void DbEnv::set_message_stream(__DB_STD(ostream) *stream){	DB_ENV *dbenv = unwrap(this);	message_stream_ = stream;	message_callback_ = 0;	dbenv->set_msgcall(dbenv, (stream == 0) ? 0 :			   _stream_message_function_c);}int DbEnv::set_paniccall(void (*arg)(DbEnv *, int)){	DB_ENV *dbenv = unwrap(this);	paniccall_callback_ = arg;	return (dbenv->set_paniccall(dbenv, _paniccall_intercept_c));}DBENV_METHOD(set_rpc_server,    (void *cl, char *host, long tsec, long ssec, u_int32_t flags),    (dbenv, cl, host, tsec, ssec, flags))DBENV_METHOD(get_shm_key, (long *shm_keyp), (dbenv, shm_keyp))DBENV_METHOD(set_shm_key, (long shm_key), (dbenv, shm_key))// Note: this changes from last_known_error_policy to error_policy()DBENV_METHOD(get_tas_spins, (u_int32_t *argp), (dbenv, argp))DBENV_METHOD(set_tas_spins, (u_int32_t arg), (dbenv, arg))int DbEnv::set_app_dispatch    (int (*arg)(DbEnv *, Dbt *, DbLsn *, db_recops)){	DB_ENV *dbenv = unwrap(this);	int ret;	app_dispatch_callback_ = arg;	if ((ret = dbenv->set_app_dispatch(dbenv,	    _app_dispatch_intercept_c)) != 0)		DB_ERROR(this, "DbEnv::set_app_dispatch", ret, error_policy());	return (ret);}DBENV_METHOD(get_tx_timestamp, (time_t *timestamp), (dbenv, timestamp))DBENV_METHOD(set_tx_timestamp, (time_t *timestamp), (dbenv, timestamp))DBENV_METHOD(get_verbose, (u_int32_t which, int *onoffp),    (dbenv, which, onoffp))DBENV_METHOD(set_verbose, (u_int32_t which, int onoff), (dbenv, which, onoff))int DbEnv::txn_begin(DbTxn *pid, DbTxn **tid, u_int32_t flags){	DB_ENV *env = unwrap(this);	DB_TXN *txn;	int ret;	ret = env->txn_begin(env, unwrap(pid), &txn, flags);	if (DB_RETOK_STD(ret))		*tid = new DbTxn(txn);	else		DB_ERROR(this, "DbEnv::txn_begin", ret, error_policy());	return (ret);}DBENV_METHOD(txn_checkpoint, (u_int32_t kbyte, u_int32_t min, u_int32_t flags),    (dbenv, kbyte, min, flags))int DbEnv::txn_recover(DbPreplist *preplist, long count,    long *retp, u_int32_t flags){	DB_ENV *dbenv = unwrap(this);	DB_PREPLIST *c_preplist;	long i;	int ret;	/*	 * We need to allocate some local storage for the	 * returned preplist, and that requires us to do	 * our own argument validation.	 */	if (count <= 0)		ret = EINVAL;	else		ret = __os_malloc(dbenv, sizeof(DB_PREPLIST) * count,		    &c_preplist);	if (ret != 0) {		DB_ERROR(this, "DbEnv::txn_recover", ret, error_policy());		return (ret);	}	if ((ret =	    dbenv->txn_recover(dbenv, c_preplist, count, retp, flags)) != 0) {		__os_free(dbenv, c_preplist);		DB_ERROR(this, "DbEnv::txn_recover", ret, error_policy());		return (ret);	}	for (i = 0; i < *retp; i++) {		preplist[i].txn = new DbTxn();		preplist[i].txn->imp_ = c_preplist[i].txn;		memcpy(preplist[i].gid, c_preplist[i].gid,		    sizeof(preplist[i].gid));	}	__os_free(dbenv, c_preplist);	return (0);}DBENV_METHOD(txn_stat, (DB_TXN_STAT **statp, u_int32_t flags),    (dbenv, statp, flags))DBENV_METHOD(txn_stat_print, (u_int32_t flags), (dbenv, flags))int DbEnv::set_rep_transport(int myid,    int (*f_send)(DbEnv *, const Dbt *, const Dbt *, const DbLsn *, int,		  u_int32_t)){	DB_ENV *dbenv = unwrap(this);	int ret;	rep_send_callback_ = f_send;	if ((ret = dbenv->set_rep_transport(dbenv,	    myid, _rep_send_intercept_c)) != 0)		DB_ERROR(this, "DbEnv::set_rep_transport", ret, error_policy());	return (ret);}DBENV_METHOD(rep_elect,    (int nsites,    int nvotes, int priority, u_int32_t timeout, int *eidp, u_int32_t flags),    (dbenv, nvotes, nsites, priority, timeout, eidp, flags))int DbEnv::rep_process_message(Dbt *control,    Dbt *rec, int *idp, DbLsn *ret_lsnp){	DB_ENV *dbenv = unwrap(this);	int ret;	ret = dbenv->rep_process_message(dbenv, control, rec, idp, ret_lsnp);	if (!DB_RETOK_REPPMSG(ret))		DB_ERROR(this, "DbEnv::rep_process_message", ret,		    error_policy());	return (ret);}DBENV_METHOD(rep_start,    (Dbt *cookie, u_int32_t flags),    (dbenv, (DBT *)cookie, flags))DBENV_METHOD(rep_stat, (DB_REP_STAT **statp, u_int32_t flags),    (dbenv, statp, flags))DBENV_METHOD(rep_stat_print, (u_int32_t flags), (dbenv, flags))DBENV_METHOD(get_rep_limit, (u_int32_t *gbytesp, u_int32_t *bytesp),    (dbenv, gbytesp, bytesp))DBENV_METHOD(set_rep_limit, (u_int32_t gbytes, u_int32_t bytes),    (dbenv, gbytes, bytes))DBENV_METHOD(get_timeout,    (db_timeout_t *timeoutp, u_int32_t flags),    (dbenv, timeoutp, flags))DBENV_METHOD(set_timeout,    (db_timeout_t timeout, u_int32_t flags),    (dbenv, timeout, flags))// static methodchar *DbEnv::version(int *major, int *minor, int *patch){	return (db_version(major, minor, patch));}// static methodDbEnv *DbEnv::wrap_DB_ENV(DB_ENV *dbenv){	DbEnv *wrapped_env = get_DbEnv(dbenv);	return (wrapped_env != NULL) ? wrapped_env : new DbEnv(dbenv, 0);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -