class BDB::Hash
Public Instance Methods
stat(p1 = v1)
click to toggle source
static VALUE bdb_hash_stat(int argc, VALUE *argv, VALUE obj) { bdb_DB *dbst; DB_HASH_STAT *bdb_stat; VALUE hash, flagv; int flags = 0; #if HAVE_DB_STAT_4_TXN DB_TXN *txnid = NULL; #endif if (rb_scan_args(argc, argv, "01", &flagv) == 1) { flags = NUM2INT(flagv); } GetDB(obj, dbst); #if HAVE_DB_STAT_4 #if HAVE_DB_STAT_4_TXN if (RTEST(dbst->txn)) { bdb_TXN *txnst; GetTxnDB(dbst->txn, txnst); txnid = txnst->txnid; } bdb_test_error(dbst->dbp->stat(dbst->dbp, txnid, &bdb_stat, flags)); #else bdb_test_error(dbst->dbp->stat(dbst->dbp, &bdb_stat, 0, flags)); #endif #else bdb_test_error(dbst->dbp->stat(dbst->dbp, &bdb_stat, flags)); #endif hash = rb_hash_new(); rb_hash_aset(hash, rb_tainted_str_new2("hash_magic"), INT2NUM(bdb_stat->hash_magic)); rb_hash_aset(hash, rb_tainted_str_new2("hash_version"), INT2NUM(bdb_stat->hash_version)); rb_hash_aset(hash, rb_tainted_str_new2("hash_pagesize"), INT2NUM(bdb_stat->hash_pagesize)); #if HAVE_ST_DB_HASH_STAT_HASH_NKEYS rb_hash_aset(hash, rb_tainted_str_new2("hash_nkeys"), INT2NUM(bdb_stat->hash_nkeys)); #if ! HAVE_ST_DB_HASH_STAT_HASH_NRECS rb_hash_aset(hash, rb_tainted_str_new2("hash_nrecs"), INT2NUM(bdb_stat->hash_nkeys)); #endif #endif #if HAVE_ST_DB_HASH_STAT_HASH_NRECS rb_hash_aset(hash, rb_tainted_str_new2("hash_nrecs"), INT2NUM(bdb_stat->hash_nrecs)); #endif #if HAVE_ST_DB_HASH_STAT_HASH_NDATA rb_hash_aset(hash, rb_tainted_str_new2("hash_ndata"), INT2NUM(bdb_stat->hash_ndata)); #endif #if HAVE_ST_DB_HASH_STAT_HASH_NELEM rb_hash_aset(hash, rb_tainted_str_new2("hash_nelem"), INT2NUM(bdb_stat->hash_nelem)); #endif rb_hash_aset(hash, rb_tainted_str_new2("hash_ffactor"), INT2NUM(bdb_stat->hash_ffactor)); rb_hash_aset(hash, rb_tainted_str_new2("hash_buckets"), INT2NUM(bdb_stat->hash_buckets)); rb_hash_aset(hash, rb_tainted_str_new2("hash_free"), INT2NUM(bdb_stat->hash_free)); rb_hash_aset(hash, rb_tainted_str_new2("hash_bfree"), INT2NUM(bdb_stat->hash_bfree)); rb_hash_aset(hash, rb_tainted_str_new2("hash_bigpages"), INT2NUM(bdb_stat->hash_bigpages)); rb_hash_aset(hash, rb_tainted_str_new2("hash_big_bfree"), INT2NUM(bdb_stat->hash_big_bfree)); rb_hash_aset(hash, rb_tainted_str_new2("hash_overflows"), INT2NUM(bdb_stat->hash_overflows)); rb_hash_aset(hash, rb_tainted_str_new2("hash_ovfl_free"), INT2NUM(bdb_stat->hash_ovfl_free)); rb_hash_aset(hash, rb_tainted_str_new2("hash_dup"), INT2NUM(bdb_stat->hash_dup)); rb_hash_aset(hash, rb_tainted_str_new2("hash_dup_free"), INT2NUM(bdb_stat->hash_dup_free)); #if HAVE_ST_DB_HASH_STAT_HASH_PAGECNT rb_hash_aset(hash, rb_tainted_str_new2("hash_pagecnt"), INT2NUM(bdb_stat->hash_pagecnt)); #endif free(bdb_stat); return hash; }