From 802b04cdf46d99d630c265a5af26c76cbbf3ec03 Mon Sep 17 00:00:00 2001 From: Denis Knauf Date: Wed, 10 Mar 2010 23:04:41 +0100 Subject: [PATCH] added: lg_max, lg_regionmax --- bdb.gemspec | 2 +- ext/bdb.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 51 insertions(+), 4 deletions(-) diff --git a/bdb.gemspec b/bdb.gemspec index 2074c81..0ba52d2 100644 --- a/bdb.gemspec +++ b/bdb.gemspec @@ -9,7 +9,7 @@ Gem::Specification.new do |s| s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version= s.authors = ["Justin Balthrop", "Denis Knauf"] - s.date = %q{2010-03-07} + s.date = %q{2010-03-09} s.description = %q{Advanced Ruby Berkeley DB library.} s.email = %q{code@justinbalthrop.com Denis.Knauf@gmail.com} s.extensions = ["ext/extconf.rb"] diff --git a/ext/bdb.c b/ext/bdb.c index c43ef06..8a70964 100644 --- a/ext/bdb.c +++ b/ext/bdb.c @@ -3064,12 +3064,55 @@ VALUE env_set_lg_bsize( VALUE obj, VALUE size) { VALUE env_get_lg_bsize( VALUE obj) { t_envh *eh; - int rv, size; + int rv; + u_int32_t size; Data_Get_Struct( obj, t_envh, eh); rv = eh->env->get_lg_bsize( eh->env, &size); if ( rv != 0 ) raise_error(rv, "env_get_lg_bsize: %s", db_strerror(rv)); - return INT2FIX(size); + return UINT2FIX(size); +} + +VALUE env_set_lg_max( VALUE obj, VALUE size) { + t_envh *eh; + int rv; + Data_Get_Struct(obj, t_envh, eh); + rv = eh->env->set_lg_max( eh->env, NUM2UINT( size)); + if ( rv != 0 ) + raise_error(rv, "env_set_lg_max: %s", db_strerror(rv)); + return size; +} + +VALUE env_get_lg_max( VALUE obj) { + t_envh *eh; + int rv; + u_int32_t size; + Data_Get_Struct( obj, t_envh, eh); + rv = eh->env->get_lg_max( eh->env, &size); + if ( rv != 0 ) + raise_error(rv, "env_get_lg_max: %s", db_strerror(rv)); + return UINT2FIX(size); +} + +VALUE env_set_lg_regionmax( VALUE obj, VALUE size) { + t_envh *eh; + int rv; + Data_Get_Struct(obj, t_envh, eh); + rv = eh->env->set_lg_regionmax( eh->env, NUM2UINT( size)); + if ( rv != 0 ) + raise_error(rv, "env_set_lg_regionmax: %s", db_strerror(rv)); + return size; +} + +VALUE env_get_lg_regionmax( VALUE obj) { + t_envh *eh; + int rv; + u_int32_t size; + Data_Get_Struct( obj, t_envh, eh); + rv = eh->env->get_lg_regionmax( eh->env, &size); + if ( rv != 0 ) + raise_error(rv, "env_get_lg_regionmax: %s", db_strerror(rv)); + return UINT2FIX(size); } @@ -3356,7 +3399,11 @@ EXCEPTIONS_CREATE rb_define_method(cEnv,"repmgr_stat_print", env_repmgr_stat_print, 1); rb_define_method(cEnv,"lg_bsize=", env_set_lg_bsize, 1); - rb_define_method(cEnv,"lg_bsize", env_get_lg_bsize, 1); + rb_define_method(cEnv,"lg_bsize", env_get_lg_bsize, 0); + rb_define_method(cEnv,"lg_max=", env_set_lg_max, 1); + rb_define_method(cEnv,"lg_max", env_get_lg_max, 0); + rb_define_method(cEnv,"lg_regionmax=", env_set_lg_regionmax, 1); + rb_define_method(cEnv,"lg_regionmax", env_get_lg_regionmax, 0); cTxnStat = rb_define_class_under(mBdb,"TxnStat",rb_cObject); rb_define_method(cTxnStat,"[]",stat_aref,1);