class BDB::Txn
Public Instance Methods
abort()
click to toggle source
static VALUE bdb_txn_abort(VALUE obj) { bdb_TXN *txnst; GetTxnDB(obj, txnst); bdb_txn_close_all(obj, Qfalse); #if HAVE_ST_DB_TXN_ABORT #if HAVE_DBXML_INTERFACE if (txnst->txn_cxx_abort) bdb_test_error(txnst->txn_cxx_abort(txnst->txn_cxx) ); else #endif bdb_test_error(txnst->txnid->abort(txnst->txnid)); #else bdb_test_error(txn_abort(txnst->txnid)); #endif txnst->txnid = NULL; if (txnst->status == THROW) { txnst->status = ROLLBACK; rb_throw("__bdb__begin", Data_Wrap_Struct(bdb_cTxnCatch, 0, 0, txnst)); } return Qtrue; }
assoc(*args)
click to toggle source
static VALUE bdb_txn_assoc(int argc, VALUE *argv, VALUE obj) { int i; VALUE ary, a; bdb_TXN *txnst; ary = rb_ary_new(); GetTxnDB(obj, txnst); for (i = 0; i < argc; i++) { a = rb_funcall(argv[i], rb_intern("__txn_dup__"), 1, obj); bdb_ary_push(&txnst->db_assoc, a); bdb_ary_push(&txnst->db_assoc_objassoc_ary, (VALUE)create_assoc(a, txnst, BDB_OBJ_TX)); rb_ary_push(ary, a); } switch (RARRAY_LEN(ary)) { case 0: return Qnil; case 1: return RARRAY_PTR(ary)[0]; default: return ary; } }
associate(*args)
click to toggle source
static VALUE bdb_txn_assoc(int argc, VALUE *argv, VALUE obj) { int i; VALUE ary, a; bdb_TXN *txnst; ary = rb_ary_new(); GetTxnDB(obj, txnst); for (i = 0; i < argc; i++) { a = rb_funcall(argv[i], rb_intern("__txn_dup__"), 1, obj); bdb_ary_push(&txnst->db_assoc, a); bdb_ary_push(&txnst->db_assoc_objassoc_ary, (VALUE)create_assoc(a, txnst, BDB_OBJ_TX)); rb_ary_push(ary, a); } switch (RARRAY_LEN(ary)) { case 0: return Qnil; case 1: return RARRAY_PTR(ary)[0]; default: return ary; } }
begin(*args)
click to toggle source
static VALUE bdb_env_begin(int argc, VALUE *argv, VALUE obj) { return bdb_env_rslbl_begin(Qfalse, argc, argv, obj); }
close(p1 = v1)
click to toggle source
static VALUE bdb_txn_commit(int argc, VALUE *argv, VALUE obj) { bdb_TXN *txnst; VALUE a; int flags; rb_secure(4); flags = 0; if (rb_scan_args(argc, argv, "01", &a) == 1) { flags = NUM2INT(a); } GetTxnDB(obj, txnst); bdb_txn_close_all(obj, Qtrue); #if HAVE_ST_DB_TXN_COMMIT #if HAVE_DBXML_INTERFACE if (txnst->txn_cxx_commit) bdb_test_error(txnst->txn_cxx_commit(txnst->txn_cxx, flags) ); else #endif bdb_test_error(txnst->txnid->commit(txnst->txnid, flags)); #else #if HAVE_TXN_COMMIT_2 bdb_test_error(txn_commit(txnst->txnid, flags)); #else bdb_test_error(txn_commit(txnst->txnid)); #endif #endif txnst->txnid = NULL; if (txnst->status == THROW) { txnst->status = COMMIT; rb_throw("__bdb__begin", Data_Wrap_Struct(bdb_cTxnCatch, 0, 0, txnst)); } return Qtrue; }
commit(p1 = v1)
click to toggle source
static VALUE bdb_txn_commit(int argc, VALUE *argv, VALUE obj) { bdb_TXN *txnst; VALUE a; int flags; rb_secure(4); flags = 0; if (rb_scan_args(argc, argv, "01", &a) == 1) { flags = NUM2INT(a); } GetTxnDB(obj, txnst); bdb_txn_close_all(obj, Qtrue); #if HAVE_ST_DB_TXN_COMMIT #if HAVE_DBXML_INTERFACE if (txnst->txn_cxx_commit) bdb_test_error(txnst->txn_cxx_commit(txnst->txn_cxx, flags) ); else #endif bdb_test_error(txnst->txnid->commit(txnst->txnid, flags)); #else #if HAVE_TXN_COMMIT_2 bdb_test_error(txn_commit(txnst->txnid, flags)); #else bdb_test_error(txn_commit(txnst->txnid)); #endif #endif txnst->txnid = NULL; if (txnst->status == THROW) { txnst->status = COMMIT; rb_throw("__bdb__begin", Data_Wrap_Struct(bdb_cTxnCatch, 0, 0, txnst)); } return Qtrue; }
dbremove(p1 = v1, p2 = v2, p3 = v3)
click to toggle source
static VALUE bdb_env_dbremove(int argc, VALUE *argv, VALUE obj) { VALUE a, b, c; char *file, *database; int flags; bdb_ENV *envst; bdb_TXN *txnst; DB_TXN *txnid; rb_secure(2); a = b = c = Qnil; file = database = NULL; flags = 0; rb_scan_args(argc, argv, "03", &a, &b, &c); if (!NIL_P(a)) { SafeStringValue(a); file = StringValuePtr(a); } if (!NIL_P(b)) { SafeStringValue(b); database = StringValuePtr(b); } if (!NIL_P(c)) { flags = NUM2INT(c); } txnid = NULL; if (rb_obj_is_kind_of(obj, bdb_cTxn)) { GetTxnDB(obj, txnst); txnid = txnst->txnid; GetEnvDB(txnst->env, envst); } else { GetEnvDB(obj, envst); } #if HAVE_CONST_DB_AUTO_COMMIT if (txnid == NULL && (envst->options & BDB_AUTO_COMMIT)) { flags |= DB_AUTO_COMMIT; } #endif bdb_test_error(envst->envp->dbremove(envst->envp, txnid, file, database, flags)); return Qnil; }
dbrename(p1, p2, p3 = v3, p4 = v4)
click to toggle source
static VALUE bdb_env_dbrename(int argc, VALUE *argv, VALUE obj) { VALUE a, b, c, d; char *file, *database, *newname; int flags; bdb_ENV *envst; bdb_TXN *txnst; DB_TXN *txnid; rb_secure(2); a = b = c = Qnil; file = database = newname = NULL; flags = 0; if (rb_scan_args(argc, argv, "22", &a, &b, &c, &d) == 2) { c = b; b = d = Qnil; } if (!NIL_P(a)) { SafeStringValue(a); file = StringValuePtr(a); } if (!NIL_P(b)) { SafeStringValue(b); database = StringValuePtr(b); } if (!NIL_P(c)) { SafeStringValue(c); newname = StringValuePtr(c); } else { rb_raise(bdb_eFatal, "newname not specified"); } if (!NIL_P(d)) { flags = NUM2INT(d); } txnid = NULL; if (rb_obj_is_kind_of(obj, bdb_cTxn)) { GetTxnDB(obj, txnst); txnid = txnst->txnid; GetEnvDB(txnst->env, envst); } else { GetEnvDB(obj, envst); } #if HAVE_CONST_DB_AUTO_COMMIT if (txnid == NULL && (envst->options & BDB_AUTO_COMMIT)) { flags |= DB_AUTO_COMMIT; } #endif bdb_test_error(envst->envp->dbrename(envst->envp, txnid, file, database, newname, flags)); return Qnil; }
discard()
click to toggle source
static VALUE bdb_txn_discard(VALUE obj) { bdb_TXN *txnst; int flags; rb_secure(4); flags = 0; GetTxnDB(obj, txnst); #if HAVE_ST_DB_TXN_DISCARD #if HAVE_DBXML_INTERFACE if (txnst->txn_cxx_discard) bdb_test_error(txnst->txn_cxx_discard(txnst->txn_cxx, flags) ); else #endif bdb_test_error(txnst->txnid->discard(txnst->txnid, flags)); #else bdb_test_error(txn_discard(txnst->txnid, flags)); #endif txnst->txnid = NULL; return Qtrue; }
id()
click to toggle source
static VALUE bdb_txn_id(VALUE obj) { bdb_TXN *txnst; int res; GetTxnDB(obj, txnst); #if HAVE_ST_DB_TXN_ID res = txnst->txnid->id(txnst->txnid); #else res = txn_id(txnst->txnid); #endif return INT2FIX(res); }
lock_timeout=(p1)
click to toggle source
static VALUE bdb_txn_set_lock_timeout(VALUE obj, VALUE a) { bdb_TXN *txnst; if (!NIL_P(a)) { GetTxnDB(obj, txnst); bdb_test_error(txnst->txnid->set_timeout(txnst->txnid, NUM2UINT(a), DB_SET_LOCK_TIMEOUT)); } return obj; }
name()
click to toggle source
static VALUE bdb_txn_get_name(VALUE obj) { bdb_TXN *txnst; const char *name; GetTxnDB(obj, txnst); bdb_test_error(txnst->txnid->get_name(txnst->txnid, &name)); return rb_tainted_str_new2(name); }
name=(p1)
click to toggle source
static VALUE bdb_txn_set_name(VALUE obj, VALUE a) { bdb_TXN *txnst; GetTxnDB(obj, txnst); bdb_test_error(txnst->txnid->set_name(txnst->txnid, StringValuePtr(a))); return a; }
set_lock_timeout(p1)
click to toggle source
static VALUE bdb_txn_set_lock_timeout(VALUE obj, VALUE a) { bdb_TXN *txnst; if (!NIL_P(a)) { GetTxnDB(obj, txnst); bdb_test_error(txnst->txnid->set_timeout(txnst->txnid, NUM2UINT(a), DB_SET_LOCK_TIMEOUT)); } return obj; }
set_timeout(p1)
click to toggle source
static VALUE bdb_txn_set_timeout(VALUE obj, VALUE a) { if (!NIL_P(a)) { if (TYPE(a) == T_ARRAY) { if (RARRAY_LEN(a) >= 1 && !NIL_P(RARRAY_PTR(a)[0])) { bdb_txn_set_txn_timeout(obj, RARRAY_PTR(a)[0]); } if (RARRAY_LEN(a) == 2 && !NIL_P(RARRAY_PTR(a)[1])) { bdb_txn_set_lock_timeout(obj, RARRAY_PTR(a)[1]); } } else { bdb_txn_set_txn_timeout(obj, a); } } return obj; }
set_txn_timeout(p1)
click to toggle source
static VALUE bdb_txn_set_txn_timeout(VALUE obj, VALUE a) { bdb_TXN *txnst; if (!NIL_P(a)) { GetTxnDB(obj, txnst); bdb_test_error(txnst->txnid->set_timeout(txnst->txnid, NUM2UINT(a), DB_SET_TXN_TIMEOUT)); } return obj; }
timeout=(p1)
click to toggle source
static VALUE bdb_txn_set_timeout(VALUE obj, VALUE a) { if (!NIL_P(a)) { if (TYPE(a) == T_ARRAY) { if (RARRAY_LEN(a) >= 1 && !NIL_P(RARRAY_PTR(a)[0])) { bdb_txn_set_txn_timeout(obj, RARRAY_PTR(a)[0]); } if (RARRAY_LEN(a) == 2 && !NIL_P(RARRAY_PTR(a)[1])) { bdb_txn_set_lock_timeout(obj, RARRAY_PTR(a)[1]); } } else { bdb_txn_set_txn_timeout(obj, a); } } return obj; }
transaction(*args)
click to toggle source
static VALUE bdb_env_begin(int argc, VALUE *argv, VALUE obj) { return bdb_env_rslbl_begin(Qfalse, argc, argv, obj); }
txn_abort()
click to toggle source
static VALUE bdb_txn_abort(VALUE obj) { bdb_TXN *txnst; GetTxnDB(obj, txnst); bdb_txn_close_all(obj, Qfalse); #if HAVE_ST_DB_TXN_ABORT #if HAVE_DBXML_INTERFACE if (txnst->txn_cxx_abort) bdb_test_error(txnst->txn_cxx_abort(txnst->txn_cxx) ); else #endif bdb_test_error(txnst->txnid->abort(txnst->txnid)); #else bdb_test_error(txn_abort(txnst->txnid)); #endif txnst->txnid = NULL; if (txnst->status == THROW) { txnst->status = ROLLBACK; rb_throw("__bdb__begin", Data_Wrap_Struct(bdb_cTxnCatch, 0, 0, txnst)); } return Qtrue; }
txn_assoc(*args)
click to toggle source
static VALUE bdb_txn_assoc(int argc, VALUE *argv, VALUE obj) { int i; VALUE ary, a; bdb_TXN *txnst; ary = rb_ary_new(); GetTxnDB(obj, txnst); for (i = 0; i < argc; i++) { a = rb_funcall(argv[i], rb_intern("__txn_dup__"), 1, obj); bdb_ary_push(&txnst->db_assoc, a); bdb_ary_push(&txnst->db_assoc_objassoc_ary, (VALUE)create_assoc(a, txnst, BDB_OBJ_TX)); rb_ary_push(ary, a); } switch (RARRAY_LEN(ary)) { case 0: return Qnil; case 1: return RARRAY_PTR(ary)[0]; default: return ary; } }
txn_begin(*args)
click to toggle source
static VALUE bdb_env_begin(int argc, VALUE *argv, VALUE obj) { return bdb_env_rslbl_begin(Qfalse, argc, argv, obj); }
txn_close(p1 = v1)
click to toggle source
static VALUE bdb_txn_commit(int argc, VALUE *argv, VALUE obj) { bdb_TXN *txnst; VALUE a; int flags; rb_secure(4); flags = 0; if (rb_scan_args(argc, argv, "01", &a) == 1) { flags = NUM2INT(a); } GetTxnDB(obj, txnst); bdb_txn_close_all(obj, Qtrue); #if HAVE_ST_DB_TXN_COMMIT #if HAVE_DBXML_INTERFACE if (txnst->txn_cxx_commit) bdb_test_error(txnst->txn_cxx_commit(txnst->txn_cxx, flags) ); else #endif bdb_test_error(txnst->txnid->commit(txnst->txnid, flags)); #else #if HAVE_TXN_COMMIT_2 bdb_test_error(txn_commit(txnst->txnid, flags)); #else bdb_test_error(txn_commit(txnst->txnid)); #endif #endif txnst->txnid = NULL; if (txnst->status == THROW) { txnst->status = COMMIT; rb_throw("__bdb__begin", Data_Wrap_Struct(bdb_cTxnCatch, 0, 0, txnst)); } return Qtrue; }
txn_commit(p1 = v1)
click to toggle source
static VALUE bdb_txn_commit(int argc, VALUE *argv, VALUE obj) { bdb_TXN *txnst; VALUE a; int flags; rb_secure(4); flags = 0; if (rb_scan_args(argc, argv, "01", &a) == 1) { flags = NUM2INT(a); } GetTxnDB(obj, txnst); bdb_txn_close_all(obj, Qtrue); #if HAVE_ST_DB_TXN_COMMIT #if HAVE_DBXML_INTERFACE if (txnst->txn_cxx_commit) bdb_test_error(txnst->txn_cxx_commit(txnst->txn_cxx, flags) ); else #endif bdb_test_error(txnst->txnid->commit(txnst->txnid, flags)); #else #if HAVE_TXN_COMMIT_2 bdb_test_error(txn_commit(txnst->txnid, flags)); #else bdb_test_error(txn_commit(txnst->txnid)); #endif #endif txnst->txnid = NULL; if (txnst->status == THROW) { txnst->status = COMMIT; rb_throw("__bdb__begin", Data_Wrap_Struct(bdb_cTxnCatch, 0, 0, txnst)); } return Qtrue; }
txn_discard()
click to toggle source
static VALUE bdb_txn_discard(VALUE obj) { bdb_TXN *txnst; int flags; rb_secure(4); flags = 0; GetTxnDB(obj, txnst); #if HAVE_ST_DB_TXN_DISCARD #if HAVE_DBXML_INTERFACE if (txnst->txn_cxx_discard) bdb_test_error(txnst->txn_cxx_discard(txnst->txn_cxx, flags) ); else #endif bdb_test_error(txnst->txnid->discard(txnst->txnid, flags)); #else bdb_test_error(txn_discard(txnst->txnid, flags)); #endif txnst->txnid = NULL; return Qtrue; }
txn_id()
click to toggle source
static VALUE bdb_txn_id(VALUE obj) { bdb_TXN *txnst; int res; GetTxnDB(obj, txnst); #if HAVE_ST_DB_TXN_ID res = txnst->txnid->id(txnst->txnid); #else res = txn_id(txnst->txnid); #endif return INT2FIX(res); }
txn_timeout=(p1)
click to toggle source
static VALUE bdb_txn_set_txn_timeout(VALUE obj, VALUE a) { bdb_TXN *txnst; if (!NIL_P(a)) { GetTxnDB(obj, txnst); bdb_test_error(txnst->txnid->set_timeout(txnst->txnid, NUM2UINT(a), DB_SET_TXN_TIMEOUT)); } return obj; }