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

📄 berkeleydb.xs

📁 BerkeleyDB源码
💻 XS
📖 第 1 页 / 共 5 页
字号:
	      safefree(list);	  }#endif	}BerkeleyDB::Txn::Raw_txn_begin(env, pid=NULL, flags=0)	u_int32_t		flags	BerkeleyDB::Env		env	BerkeleyDB::Txn		pid	CODE:	{	    DB_TXN *txn ;	    DB_TXN *p_id = NULL ;	    Trace(("txn_begin pid %d, flags %d\n", pid, flags)) ;#if DB_VERSION_MAJOR == 2	    if (env->Env->tx_info == NULL)		softCrash("Transaction Manager not enabled") ;#endif	    if (!env->txn_enabled)		softCrash("Transaction Manager not enabled") ;	    if (pid)		p_id = pid->txn ;	    env->TxnMgrStatus =#if DB_VERSION_MAJOR == 2	    	txn_begin(env->Env->tx_info, p_id, &txn) ;#else#  ifdef AT_LEAST_DB_4	    	env->Env->txn_begin(env->Env, p_id, &txn, flags) ;#  else	    	txn_begin(env->Env, p_id, &txn, flags) ;#  endif#endif	    if (env->TxnMgrStatus == 0) {	      ZMALLOC(RETVAL, BerkeleyDB_Txn_type) ;	      RETVAL->txn  = txn ;	      RETVAL->active = TRUE ;	      Trace(("_txn_begin created txn [%p] in [%p]\n", txn, RETVAL));	      hash_store_iv("BerkeleyDB::Term::Txn", (char *)RETVAL, 1) ;	    }	    else		RETVAL = NULL ;	}	OUTPUT:	    RETVAL#if DB_VERSION_MAJOR == 2#  define env_txn_checkpoint(e,k,m,f) txn_checkpoint(e->Env->tx_info, k, m)#else /* DB 3.0 or better */#  ifdef AT_LEAST_DB_4 #    define env_txn_checkpoint(e,k,m,f) e->Env->txn_checkpoint(e->Env, k, m, f)#  else#    ifdef AT_LEAST_DB_3_1#      define env_txn_checkpoint(e,k,m,f) txn_checkpoint(e->Env, k, m, 0)#    else#      define env_txn_checkpoint(e,k,m,f) txn_checkpoint(e->Env, k, m)#    endif#  endif#endifDualTypeenv_txn_checkpoint(env, kbyte, min, flags=0)	BerkeleyDB::Env		env	long			kbyte	long			min	u_int32_t		flagsHV *txn_stat(env)	BerkeleyDB::Env		env	HV *			RETVAL = NULL ;	CODE:	{	    DB_TXN_STAT *	stat ;#ifdef AT_LEAST_DB_4	    if(env->Env->txn_stat(env->Env, &stat, 0) == 0) {#else#  ifdef AT_LEAST_DB_3_3	    if(txn_stat(env->Env, &stat) == 0) {#  else#    if DB_VERSION_MAJOR == 2	    if(txn_stat(env->Env->tx_info, &stat, safemalloc) == 0) {#    else	    if(txn_stat(env->Env, &stat, safemalloc) == 0) {#    endif#  endif#endif	    	RETVAL = (HV*)sv_2mortal((SV*)newHV()) ;		hv_store_iv(RETVAL, "st_time_ckp", stat->st_time_ckp) ;		hv_store_iv(RETVAL, "st_last_txnid", stat->st_last_txnid) ;		hv_store_iv(RETVAL, "st_maxtxns", stat->st_maxtxns) ;		hv_store_iv(RETVAL, "st_naborts", stat->st_naborts) ;		hv_store_iv(RETVAL, "st_nbegins", stat->st_nbegins) ;		hv_store_iv(RETVAL, "st_ncommits", stat->st_ncommits) ;		hv_store_iv(RETVAL, "st_nactive", stat->st_nactive) ;#if DB_VERSION_MAJOR > 2		hv_store_iv(RETVAL, "st_maxnactive", stat->st_maxnactive) ;		hv_store_iv(RETVAL, "st_regsize", stat->st_regsize) ;		hv_store_iv(RETVAL, "st_region_wait", stat->st_region_wait) ;		hv_store_iv(RETVAL, "st_region_nowait", stat->st_region_nowait) ;#endif		safefree(stat) ;	    }	}	OUTPUT:	    RETVAL#define EnDis(x)	((x) ? "Enabled" : "Disabled")voidprintEnv(env)        BerkeleyDB::Env  env	INIT:	    ckActive_Environment(env->active) ;	CODE:#if 0	  printf("env             [0x%X]\n", env) ;	  printf("  ErrPrefix     [%s]\n", env->ErrPrefix				           ? SvPVX(env->ErrPrefix) : 0) ;	  printf("  DB_ENV\n") ;	  printf("    db_lorder   [%d]\n", env->Env.db_lorder) ;	  printf("    db_home     [%s]\n", env->Env.db_home) ;	  printf("    db_data_dir [%s]\n", env->Env.db_data_dir) ;	  printf("    db_log_dir  [%s]\n", env->Env.db_log_dir) ;	  printf("    db_tmp_dir  [%s]\n", env->Env.db_tmp_dir) ;	  printf("    lk_info     [%s]\n", EnDis(env->Env.lk_info)) ;	  printf("    lk_max      [%d]\n", env->Env.lk_max) ;	  printf("    lg_info     [%s]\n", EnDis(env->Env.lg_info)) ;	  printf("    lg_max      [%d]\n", env->Env.lg_max) ;	  printf("    mp_info     [%s]\n", EnDis(env->Env.mp_info)) ;	  printf("    mp_size     [%d]\n", env->Env.mp_size) ;	  printf("    tx_info     [%s]\n", EnDis(env->Env.tx_info)) ;	  printf("    tx_max      [%d]\n", env->Env.tx_max) ;	  printf("    flags       [%d]\n", env->Env.flags) ;	  printf("\n") ;#endifSV *errPrefix(env, prefix)        BerkeleyDB::Env  env	SV * 		 prefix	INIT:	    ckActive_Environment(env->active) ;	CODE:	  if (env->ErrPrefix) {	      RETVAL = newSVsv(env->ErrPrefix) ;              SvPOK_only(RETVAL) ;	      sv_setsv(env->ErrPrefix, prefix) ;	  }	  else {	      RETVAL = NULL ;	      env->ErrPrefix = newSVsv(prefix) ;	  }	  SvPOK_only(env->ErrPrefix) ;#if DB_VERSION_MAJOR == 2	  env->Env->db_errpfx = SvPVX(env->ErrPrefix) ;#else	  env->Env->set_errpfx(env->Env, SvPVX(env->ErrPrefix)) ;#endif	OUTPUT:	  RETVALDualTypestatus(env)        BerkeleyDB::Env 	env	CODE:	    RETVAL =  env->Status ;	OUTPUT:	    RETVALDualTypedb_appexit(env)        BerkeleyDB::Env 	env	ALIAS:	close =1	INIT:	    ckActive_Environment(env->active) ;	CODE:#ifdef STRICT_CLOSE	    if (env->open_dbs)		softCrash("attempted to close an environment with %d open database(s)",			env->open_dbs) ;#endif /* STRICT_CLOSE */#if DB_VERSION_MAJOR == 2	    RETVAL = db_appexit(env->Env) ;#else	    RETVAL = (env->Env->close)(env->Env, 0) ;#endif	    env->active = FALSE ;	    hash_delete("BerkeleyDB::Term::Env", (char *)env) ;	OUTPUT:	    RETVALvoid_DESTROY(env)        BerkeleyDB::Env  env	int RETVAL = 0 ;	CODE:	  Trace(("In BerkeleyDB::Env::DESTROY\n"));	  Trace(("    env %ld Env %ld dirty %d\n", env, &env->Env, PL_dirty)) ;	  if (env->active)#if DB_VERSION_MAJOR == 2              db_appexit(env->Env) ;#else	      (env->Env->close)(env->Env, 0) ;#endif          if (env->ErrHandle)              SvREFCNT_dec(env->ErrHandle) ;          if (env->ErrPrefix)              SvREFCNT_dec(env->ErrPrefix) ;#if DB_VERSION_MAJOR == 2          Safefree(env->Env) ;#endif          Safefree(env) ;	  hash_delete("BerkeleyDB::Term::Env", (char *)env) ;	  Trace(("End of BerkeleyDB::Env::DESTROY %d\n", RETVAL)) ;BerkeleyDB::TxnMgr::Raw_TxnMgr(env)        BerkeleyDB::Env  env	INIT:	    ckActive_Environment(env->active) ;	    if (!env->txn_enabled)		softCrash("Transaction Manager not enabled") ;	CODE:	    ZMALLOC(RETVAL, BerkeleyDB_TxnMgr_type) ;	    RETVAL->env  = env ;	    /* hash_store_iv("BerkeleyDB::Term::TxnMgr", (char *)txn, 1) ; */	OUTPUT:	    RETVALintget_shm_key(env, id)        BerkeleyDB::Env  env	long  		 id = NO_INIT	INIT:	  ckActive_Database(env->active) ;	CODE:#ifndef AT_LEAST_DB_4_2	    softCrash("$env->get_shm_key needs Berkeley DB 4.2 or better") ;#else	    RETVAL = env->Env->get_shm_key(env->Env, &id);#endif	    	OUTPUT:	    RETVAL	    idintset_lg_dir(env, dir)        BerkeleyDB::Env  env	char *		 dir	INIT:	  ckActive_Database(env->active) ;	CODE:#ifndef AT_LEAST_DB_3_1	    softCrash("$env->set_lg_dir needs Berkeley DB 3.1 or better") ;#else	    RETVAL = env->Status = env->Env->set_lg_dir(env->Env, dir);#endif	OUTPUT:	    RETVALintset_lg_bsize(env, bsize)        BerkeleyDB::Env  env	u_int32_t	 bsize	INIT:	  ckActive_Database(env->active) ;	CODE:#ifndef AT_LEAST_DB_3	    softCrash("$env->set_lg_bsize needs Berkeley DB 3.0.55 or better") ;#else	    RETVAL = env->Status = env->Env->set_lg_bsize(env->Env, bsize);#endif	OUTPUT:	    RETVALintset_lg_max(env, lg_max)        BerkeleyDB::Env  env	u_int32_t	 lg_max	INIT:	  ckActive_Database(env->active) ;	CODE:#ifndef AT_LEAST_DB_3	    softCrash("$env->set_lg_max needs Berkeley DB 3.0.55 or better") ;#else	    RETVAL = env->Status = env->Env->set_lg_max(env->Env, lg_max);#endif	OUTPUT:	    RETVALintset_data_dir(env, dir)        BerkeleyDB::Env  env	char *		 dir	INIT:	  ckActive_Database(env->active) ;	CODE:#ifndef AT_LEAST_DB_3_1	    softCrash("$env->set_data_dir needs Berkeley DB 3.1 or better") ;#else            dieIfEnvOpened(env, "set_data_dir");	    RETVAL = env->Status = env->Env->set_data_dir(env->Env, dir);#endif	OUTPUT:	    RETVALintset_tmp_dir(env, dir)        BerkeleyDB::Env  env	char *		 dir	INIT:	  ckActive_Database(env->active) ;	CODE:#ifndef AT_LEAST_DB_3_1	    softCrash("$env->set_tmp_dir needs Berkeley DB 3.1 or better") ;#else	    RETVAL = env->Status = env->Env->set_tmp_dir(env->Env, dir);#endif	OUTPUT:	    RETVALintset_mutexlocks(env, do_lock)        BerkeleyDB::Env  env	int 		 do_lock	INIT:	  ckActive_Database(env->active) ;	CODE:#ifndef AT_LEAST_DB_3	    softCrash("$env->set_setmutexlocks needs Berkeley DB 3.0 or better") ;#else#  ifdef AT_LEAST_DB_4	    RETVAL = env->Status = env->Env->set_flags(env->Env, DB_NOLOCKING, !do_lock);#  else#    if defined(AT_LEAST_DB_3_2_6) || defined(IS_DB_3_0_x)	    RETVAL = env->Status = env->Env->set_mutexlocks(env->Env, do_lock);#    else /* DB 3.1 or 3.2.3 */	    RETVAL = env->Status = db_env_set_mutexlocks(do_lock);#    endif#  endif#endif	OUTPUT:	    RETVALintset_verbose(env, which, onoff)        BerkeleyDB::Env  env	u_int32_t	 which	int	 	 onoff	INIT:	  ckActive_Database(env->active) ;	CODE:#ifndef AT_LEAST_DB_3	    softCrash("$env->set_verbose needs Berkeley DB 3.x or better") ;#else	    RETVAL = env->Status = env->Env->set_verbose(env->Env, which, onoff);#endif	OUTPUT:	    RETVALintset_flags(env, flags, onoff)        BerkeleyDB::Env  env	u_int32_t	 flags	int	 	 onoff	INIT:	  ckActive_Database(env->active) ;	CODE:#ifndef AT_LEAST_DB_3_2	    softCrash("$env->set_flags needs Berkeley DB 3.2.x or better") ;#else	    RETVAL = env->Status = env->Env->set_flags(env->Env, flags, onoff);#endif	OUTPUT:	    RETVALMODULE = BerkeleyDB::Term		PACKAGE = BerkeleyDB::Termvoidclose_everything()#define safeCroak(string)	softCrash(string)voidsafeCroak(string)	char * stringMODULE = BerkeleyDB::Hash	PACKAGE = BerkeleyDB::Hash	PREFIX = hash_BerkeleyDB::Hash::Raw_db_open_hash(self, ref)	char *		self	SV * 		ref	CODE:	{	    HV *		hash ;	    SV * 		sv ;	    DB_INFO 		info ;	    BerkeleyDB__Env	dbenv = NULL;	    SV *		ref_dbenv = NULL;	    const char *	file = NULL ;	    const char *	subname = NULL ;	    int			flags = 0 ;	    int			mode = 0 ;    	    BerkeleyDB 		db ;    	    BerkeleyDB__Txn 	txn = NULL ;	    char *	enc_passwd = NULL ;	    int		enc_flags = 0 ;    	    Trace(("_db_open_hash start\n")) ;	    hash = (HV*) SvRV(ref) ;	    SetValue_pv(file, "Filename", char *) ;	    SetValue_pv(subname, "Subname", char *) ;	    SetValue_ov(txn, "Txn", BerkeleyDB__Txn) ;	    SetValue_ov(dbenv, "Env", BerkeleyDB__Env) ;	    ref_dbenv = sv ;	    SetValue_iv(flags, "Flags") ;	    SetValue_iv(mode, "Mode") ;	    SetValue_pv(enc_passwd,"Enc_Passwd", char *) ;	    SetValue_iv(enc_flags, "Enc_Flags") ;       	    Zero(&info, 1, DB_INFO) ;	    SetValue_iv(info.db_cachesize, "Cachesize") ;	    SetValue_iv(info.db_lorder, "Lorder") ;	    SetValue_iv(info.db_pagesize, "Pagesize") ;	    SetValue_iv(info.h_ffactor, "Ffactor") ;	    SetValue_iv(info.h_nelem, "Nelem") ;	    SetValue_iv(info.flags, "Property") ;	    ZMALLOC(db, BerkeleyDB_type) ;	    if ((sv = readHash(hash, "Hash")) && sv != &PL_sv_undef) {		info.h_hash = hash_cb ;		db->hash = newSVsv(sv) ;	    }	    /* DB_DUPSORT was introduced in DB 2.5.9 */	    if ((sv = readHash(hash, "DupCompare")) && sv != &PL_sv_undef) {#ifdef DB_DUPSORT		info.dup_compare = dup_compare ;		db->dup_compare = newSVsv(sv) ;		info.flags |= DB_DUP|DB_DUPSORT ;#else	        croak("DupCompare needs Berkeley DB 2.5.9 or later") ;#endif	    }	    RETVAL = my_db_open(db, ref, ref_dbenv, dbenv, txn, file, subname, DB_HASH, flags, mode, &info, enc_passwd, enc_flags) ;    	    Trace(("_db_open_hash end\n")) ;	}	OUTPUT:	    RETVALHV *db_stat(db, flags=0)	int			flags	BerkeleyDB::Common	db	HV *			RETVAL = NULL ;	INIT:	  ckActive_Database(db->active) ;	CODE:	{#if DB_VERSION_MAJOR == 2	    softCrash("$db->db_stat for a Hash needs Berkeley DB 3.x or better") ;#else	    DB_HASH_STAT *	stat ;#ifdef AT_LEAST_DB_4_3	    db->Status = ((db->dbp)->stat)(db->dbp, db->txn, &stat, flags) ;#else        #ifdef AT_LEAST_DB_3_3	    db->Status = ((db->dbp)->stat)(db->dbp, &stat, flags) ;#else	    db->Status = ((db->dbp)->stat)(db->dbp, &stat, safemalloc, flags) ;#endif#endif	    if (db->Status == 0) {	    	RETVAL = (HV*)sv_2mortal((SV*)newHV()) ;		hv_store_iv(RETVAL, "hash_magic", stat->hash_magic) ;		hv_store_iv(RETVAL, "hash_version", stat->hash_version);		hv_store_iv(RETVAL, "hash_pagesize", stat->hash_pagesize);#ifdef AT_LEAST_DB_3_1		hv_store_iv(RETVAL, "hash_nkeys", stat->hash_nkeys);		hv_store_iv(RETVAL, "hash_ndata", stat->hash_ndata);#else		hv_store_iv(RETVAL, "hash_nrecs", stat->hash_nrecs);#endif#ifndef AT_LEAST_DB_3_1		hv_store_iv(RETVAL, "hash_nelem", stat->hash_nelem);#endif		hv_store_iv(RETVAL, "hash_ffactor", stat->hash_ffactor);		hv_store_iv(RETVAL, "hash_buckets", stat->hash_buckets);		hv_store_iv(RETVAL, "hash_free", stat->hash_free);		hv_store_iv(RETVAL, "hash_bfree", stat->hash_bfree);		hv_store_iv(RETVAL, "hash_bigpages", stat->hash_bigpages);		hv_store_iv(RETVAL, "hash_big_bfree", stat->hash_big_bfree);		hv_store_iv(RETVAL, "

⌨️ 快捷键说明

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