class BDB::Lsn
Public Instance Methods
<=>(p1)
click to toggle source
static VALUE
bdb_lsn_log_compare(VALUE obj, VALUE a)
{
struct dblsnst *lsnst1, *lsnst2;
bdb_ENV *envst1, *envst2;
if (!rb_obj_is_kind_of(a, bdb_cLsn)) {
rb_raise(bdb_eFatal, "invalid argument for <=>");
}
GetLsn(obj, lsnst1, envst1);
GetLsn(a, lsnst2, envst2);
return INT2NUM(log_compare(lsnst1->lsn, lsnst2->lsn));
}
close()
click to toggle source
static VALUE
bdb_log_cursor_close(VALUE obj)
{
struct dblsnst *lsnst;
Data_Get_Struct(obj, struct dblsnst, lsnst);
bdb_clean_env(lsnst->env, obj);
return log_cursor_close(obj);
}
compare(p1)
click to toggle source
static VALUE
bdb_lsn_log_compare(VALUE obj, VALUE a)
{
struct dblsnst *lsnst1, *lsnst2;
bdb_ENV *envst1, *envst2;
if (!rb_obj_is_kind_of(a, bdb_cLsn)) {
rb_raise(bdb_eFatal, "invalid argument for <=>");
}
GetLsn(obj, lsnst1, envst1);
GetLsn(a, lsnst2, envst2);
return INT2NUM(log_compare(lsnst1->lsn, lsnst2->lsn));
}
cursor()
click to toggle source
static VALUE
bdb_log_cursor(VALUE lsn)
{
bdb_ENV *envst;
struct dblsnst *lsnst;
Data_Get_Struct(lsn, struct dblsnst, lsnst);
if (!lsnst->cursor) {
GetEnvDB(lsnst->env, envst);
bdb_test_error(envst->envp->log_cursor(envst->envp, &lsnst->cursor, 0));
bdb_ary_push(&envst->db_ary, lsn);
//bdb_ary_push(&envst->db_objassoc_ary, (VALUE)create_assoc(lsn, lsnst, BDB_OBJ_LOG));
}
return lsn;
}
each()
click to toggle source
static VALUE
bdb_log_each(VALUE lsn)
{
struct dblsnst *lsnst;
Data_Get_Struct(lsn, struct dblsnst, lsnst);
lsnst->flags = DB_NEXT;
return rb_ensure(bdb_log_i_get, lsn, bdb_log_cursor_close, lsn);
}
env()
click to toggle source
static VALUE
bdb_lsn_env(VALUE obj)
{
struct dblsnst *lsnst;
bdb_ENV *envst;
GetLsn(obj, lsnst, envst);
return lsnst->env;
}
file()
click to toggle source
static VALUE
bdb_lsn_log_file(VALUE obj)
{
struct dblsnst *lsnst;
bdb_ENV *envst;
char name[2048];
GetLsn(obj, lsnst, envst);
#if HAVE_ST_DB_ENV_LG_INFO
if (!envst->envp->lg_info) {
rb_raise(bdb_eFatal, "log region not open");
}
bdb_test_error(log_file(envst->envp->lg_info, lsnst->lsn, name, 2048));
#elif HAVE_ST_DB_ENV_LOG_FILE
bdb_test_error(envst->envp->log_file(envst->envp, lsnst->lsn, name, 2048));
#else
bdb_test_error(log_file(envst->envp, lsnst->lsn, name, 2048));
#endif
return rb_tainted_str_new2(name);
}
flush()
click to toggle source
static VALUE
bdb_lsn_log_flush(VALUE obj)
{
struct dblsnst *lsnst;
bdb_ENV *envst;
GetLsn(obj, lsnst, envst);
#if HAVE_ST_DB_ENV_LG_INFO
if (!envst->envp->lg_info) {
rb_raise(bdb_eFatal, "log region not open");
}
bdb_test_error(log_flush(envst->envp->lg_info, lsnst->lsn));
#elif HAVE_ST_DB_ENV_LOG_FLUSH
bdb_test_error(envst->envp->log_flush(envst->envp, lsnst->lsn));
#else
bdb_test_error(log_flush(envst->envp, lsnst->lsn));
#endif
return obj;
}
get(p1 = v1)
click to toggle source
static VALUE
bdb_lsn_log_get(int argc, VALUE *argv, VALUE obj)
{
struct dblsnst *lsnst;
DBT data;
VALUE res, a;
int ret, flags;
bdb_ENV *envst;
#if HAVE_ST_DB_ENV_LOG_CURSOR
DB_LOGC *cursor;
#endif
flags = DB_SET;
if (rb_scan_args(argc, argv, "01", &a) == 1) {
flags = NUM2INT(a);
}
GetLsn(obj, lsnst, envst);
#if HAVE_ST_DB_ENV_LOG_CURSOR
bdb_test_error(envst->envp->log_cursor(envst->envp, &cursor, 0));
#endif
MEMZERO(&data, DBT, 1);
data.flags |= DB_DBT_MALLOC;
#if HAVE_ST_DB_ENV_LG_INFO
if (!envst->envp->lg_info) {
rb_raise(bdb_eFatal, "log region not open");
}
ret = bdb_test_error(log_get(envst->envp->lg_info, lsnst->lsn, &data, flags));
#elif HAVE_ST_DB_ENV_LOG_CURSOR
ret = cursor->get(cursor, lsnst->lsn, &data, flags);
cursor->close(cursor, 0);
ret = bdb_test_error(ret);
#else
ret = bdb_test_error(log_get(envst->envp, lsnst->lsn, &data, flags));
#endif
if (ret == DB_NOTFOUND) {
return Qnil;
}
res = rb_tainted_str_new(data.data, data.size);
free(data.data);
return res;
}
log_close()
click to toggle source
static VALUE
bdb_log_cursor_close(VALUE obj)
{
struct dblsnst *lsnst;
Data_Get_Struct(obj, struct dblsnst, lsnst);
bdb_clean_env(lsnst->env, obj);
return log_cursor_close(obj);
}
log_compare(p1)
click to toggle source
static VALUE
bdb_lsn_log_compare(VALUE obj, VALUE a)
{
struct dblsnst *lsnst1, *lsnst2;
bdb_ENV *envst1, *envst2;
if (!rb_obj_is_kind_of(a, bdb_cLsn)) {
rb_raise(bdb_eFatal, "invalid argument for <=>");
}
GetLsn(obj, lsnst1, envst1);
GetLsn(a, lsnst2, envst2);
return INT2NUM(log_compare(lsnst1->lsn, lsnst2->lsn));
}
log_cursor()
click to toggle source
static VALUE
bdb_log_cursor(VALUE lsn)
{
bdb_ENV *envst;
struct dblsnst *lsnst;
Data_Get_Struct(lsn, struct dblsnst, lsnst);
if (!lsnst->cursor) {
GetEnvDB(lsnst->env, envst);
bdb_test_error(envst->envp->log_cursor(envst->envp, &lsnst->cursor, 0));
bdb_ary_push(&envst->db_ary, lsn);
//bdb_ary_push(&envst->db_objassoc_ary, (VALUE)create_assoc(lsn, lsnst, BDB_OBJ_LOG));
}
return lsn;
}
log_each()
click to toggle source
static VALUE
bdb_log_each(VALUE lsn)
{
struct dblsnst *lsnst;
Data_Get_Struct(lsn, struct dblsnst, lsnst);
lsnst->flags = DB_NEXT;
return rb_ensure(bdb_log_i_get, lsn, bdb_log_cursor_close, lsn);
}
log_file()
click to toggle source
static VALUE
bdb_lsn_log_file(VALUE obj)
{
struct dblsnst *lsnst;
bdb_ENV *envst;
char name[2048];
GetLsn(obj, lsnst, envst);
#if HAVE_ST_DB_ENV_LG_INFO
if (!envst->envp->lg_info) {
rb_raise(bdb_eFatal, "log region not open");
}
bdb_test_error(log_file(envst->envp->lg_info, lsnst->lsn, name, 2048));
#elif HAVE_ST_DB_ENV_LOG_FILE
bdb_test_error(envst->envp->log_file(envst->envp, lsnst->lsn, name, 2048));
#else
bdb_test_error(log_file(envst->envp, lsnst->lsn, name, 2048));
#endif
return rb_tainted_str_new2(name);
}
log_flush()
click to toggle source
static VALUE
bdb_lsn_log_flush(VALUE obj)
{
struct dblsnst *lsnst;
bdb_ENV *envst;
GetLsn(obj, lsnst, envst);
#if HAVE_ST_DB_ENV_LG_INFO
if (!envst->envp->lg_info) {
rb_raise(bdb_eFatal, "log region not open");
}
bdb_test_error(log_flush(envst->envp->lg_info, lsnst->lsn));
#elif HAVE_ST_DB_ENV_LOG_FLUSH
bdb_test_error(envst->envp->log_flush(envst->envp, lsnst->lsn));
#else
bdb_test_error(log_flush(envst->envp, lsnst->lsn));
#endif
return obj;
}
log_get(p1 = v1)
click to toggle source
static VALUE
bdb_lsn_log_get(int argc, VALUE *argv, VALUE obj)
{
struct dblsnst *lsnst;
DBT data;
VALUE res, a;
int ret, flags;
bdb_ENV *envst;
#if HAVE_ST_DB_ENV_LOG_CURSOR
DB_LOGC *cursor;
#endif
flags = DB_SET;
if (rb_scan_args(argc, argv, "01", &a) == 1) {
flags = NUM2INT(a);
}
GetLsn(obj, lsnst, envst);
#if HAVE_ST_DB_ENV_LOG_CURSOR
bdb_test_error(envst->envp->log_cursor(envst->envp, &cursor, 0));
#endif
MEMZERO(&data, DBT, 1);
data.flags |= DB_DBT_MALLOC;
#if HAVE_ST_DB_ENV_LG_INFO
if (!envst->envp->lg_info) {
rb_raise(bdb_eFatal, "log region not open");
}
ret = bdb_test_error(log_get(envst->envp->lg_info, lsnst->lsn, &data, flags));
#elif HAVE_ST_DB_ENV_LOG_CURSOR
ret = cursor->get(cursor, lsnst->lsn, &data, flags);
cursor->close(cursor, 0);
ret = bdb_test_error(ret);
#else
ret = bdb_test_error(log_get(envst->envp, lsnst->lsn, &data, flags));
#endif
if (ret == DB_NOTFOUND) {
return Qnil;
}
res = rb_tainted_str_new(data.data, data.size);
free(data.data);
return res;
}
log_reverse_each()
click to toggle source
static VALUE
bdb_log_hcae(VALUE lsn)
{
struct dblsnst *lsnst;
Data_Get_Struct(lsn, struct dblsnst, lsnst);
lsnst->flags = DB_PREV;
return rb_ensure(bdb_log_i_get, lsn, bdb_log_cursor_close, lsn);
}
#endif
static VALUE
bdb_env_log_archive(int argc, VALUE *argv, VALUE obj)
{
char **list, **file;
bdb_ENV *envst;
int flag;
VALUE res;
GetEnvDB(obj, envst);
flag = 0;
list = NULL;
if (rb_scan_args(argc, argv, "01", &res)) {
flag = NUM2INT(res);
}
#if HAVE_ST_DB_ENV_LG_INFO
if (!envst->envp->lg_info) {
rb_raise(bdb_eFatal, "log region not open");
}
bdb_test_error(log_archive(envst->envp->lg_info, &list, flag, NULL));
#elif HAVE_ST_DB_ENV_LOG_ARCHIVE
bdb_test_error(envst->envp->log_archive(envst->envp, &list, flag));
#else
#if HAVE_DB_LOG_ARCHIVE_4
bdb_test_error(log_archive(envst->envp, &list, flag, NULL));
#else
bdb_test_error(log_archive(envst->envp, &list, flag));
#endif
#endif
res = rb_ary_new();
for (file = list; file != NULL && *file != NULL; file++) {
rb_ary_push(res, rb_tainted_str_new2(*file));
}
if (list != NULL) free(list);
return res;
}
reverse_each()
click to toggle source
static VALUE
bdb_log_hcae(VALUE lsn)
{
struct dblsnst *lsnst;
Data_Get_Struct(lsn, struct dblsnst, lsnst);
lsnst->flags = DB_PREV;
return rb_ensure(bdb_log_i_get, lsn, bdb_log_cursor_close, lsn);
}
#endif
static VALUE
bdb_env_log_archive(int argc, VALUE *argv, VALUE obj)
{
char **list, **file;
bdb_ENV *envst;
int flag;
VALUE res;
GetEnvDB(obj, envst);
flag = 0;
list = NULL;
if (rb_scan_args(argc, argv, "01", &res)) {
flag = NUM2INT(res);
}
#if HAVE_ST_DB_ENV_LG_INFO
if (!envst->envp->lg_info) {
rb_raise(bdb_eFatal, "log region not open");
}
bdb_test_error(log_archive(envst->envp->lg_info, &list, flag, NULL));
#elif HAVE_ST_DB_ENV_LOG_ARCHIVE
bdb_test_error(envst->envp->log_archive(envst->envp, &list, flag));
#else
#if HAVE_DB_LOG_ARCHIVE_4
bdb_test_error(log_archive(envst->envp, &list, flag, NULL));
#else
bdb_test_error(log_archive(envst->envp, &list, flag));
#endif
#endif
res = rb_ary_new();
for (file = list; file != NULL && *file != NULL; file++) {
rb_ary_push(res, rb_tainted_str_new2(*file));
}
if (list != NULL) free(list);
return res;
}