RPM Package Manager, CVS Repository http://rpm5.org/cvs/ ____________________________________________________________________________
Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: [email protected] Module: rpm Date: 24-Sep-2009 07:13:05 Branch: HEAD Handle: 2009092405130500 Modified files: rpm/js rpmdbe-js.c rpmtxn-js.c tjs.c rpm/js/tscripts Dbe.js Log: - js: add getters/setters for DB_TXN. Summary: Revision Changes Path 1.7 +390 -35 rpm/js/rpmdbe-js.c 1.2 +27 -4 rpm/js/rpmtxn-js.c 1.57 +5 -5 rpm/js/tjs.c 1.5 +4 -4 rpm/js/tscripts/Dbe.js ____________________________________________________________________________ patch -p0 <<'@@ .' Index: rpm/js/rpmdbe-js.c ============================================================================ $ cvs diff -u -r1.6 -r1.7 rpmdbe-js.c --- rpm/js/rpmdbe-js.c 24 Sep 2009 03:49:46 -0000 1.6 +++ rpm/js/rpmdbe-js.c 24 Sep 2009 05:13:05 -0000 1.7 @@ -198,6 +198,147 @@ } static JSBool +rpmdbe_MutexAlloc(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) +{ + void * ptr = JS_GetInstancePrivate(cx, obj, &rpmdbeClass, NULL); + DB_ENV * dbenv = ptr; + JSBool ok = JS_FALSE; + +_METHOD_DEBUG_ENTRY(_debug); + + if (dbenv == NULL) goto exit; + *rval = JSVAL_FALSE; + + /* FIXME todo++ */ + + ok = JS_TRUE; + +exit: + return ok; +} + +static JSBool +rpmdbe_MutexFree(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) +{ + void * ptr = JS_GetInstancePrivate(cx, obj, &rpmdbeClass, NULL); + DB_ENV * dbenv = ptr; + JSBool ok = JS_FALSE; + +_METHOD_DEBUG_ENTRY(_debug); + + if (dbenv == NULL) goto exit; + *rval = JSVAL_FALSE; + + /* FIXME todo++ */ + + ok = JS_TRUE; + +exit: + return ok; +} + +static JSBool +rpmdbe_MutexLock(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) +{ + void * ptr = JS_GetInstancePrivate(cx, obj, &rpmdbeClass, NULL); + DB_ENV * dbenv = ptr; + JSBool ok = JS_FALSE; + +_METHOD_DEBUG_ENTRY(_debug); + + if (dbenv == NULL) goto exit; + *rval = JSVAL_FALSE; + + /* FIXME todo++ */ + + ok = JS_TRUE; + +exit: + return ok; +} + +static JSBool +rpmdbe_MutexStat(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) +{ + void * ptr = JS_GetInstancePrivate(cx, obj, &rpmdbeClass, NULL); + DB_ENV * dbenv = ptr; + uint32_t _flags = DB_STAT_ALL; + JSBool ok = JS_FALSE; + +_METHOD_DEBUG_ENTRY(_debug); + + if (dbenv == NULL) goto exit; + *rval = JSVAL_FALSE; + + if (!(ok = JS_ConvertArguments(cx, argc, argv, "/u", &_flags))) + goto exit; + + if (dbenv->app_private != NULL) { + DB_MUTEX_STAT * _stat = NULL; + int ret = dbenv->mutex_stat(dbenv, &_stat, _flags); + if (ret) + dbenv->err(dbenv, ret, "DB_ENV->mutex_stat"); + else + *rval = JSVAL_TRUE; + } + + ok = JS_TRUE; + +exit: + return ok; +} + +static JSBool +rpmdbe_MutexStatPrint(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) +{ + void * ptr = JS_GetInstancePrivate(cx, obj, &rpmdbeClass, NULL); + DB_ENV * dbenv = ptr; + uint32_t _flags = DB_STAT_ALL; + JSBool ok = JS_FALSE; + +_METHOD_DEBUG_ENTRY(_debug); + + if (dbenv == NULL) goto exit; + *rval = JSVAL_FALSE; + + if (!(ok = JS_ConvertArguments(cx, argc, argv, "/u", &_flags))) + goto exit; + + if (dbenv->app_private != NULL) { + int ret = dbenv->mutex_stat_print(dbenv, _flags); + if (ret) + dbenv->err(dbenv, ret, "DB_ENV->mutex_stat_print"); + else + *rval = JSVAL_TRUE; + } + + ok = JS_TRUE; + +exit: + return ok; +} + +static JSBool +rpmdbe_MutexUnlock(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) +{ + void * ptr = JS_GetInstancePrivate(cx, obj, &rpmdbeClass, NULL); + DB_ENV * dbenv = ptr; + JSBool ok = JS_FALSE; + +_METHOD_DEBUG_ENTRY(_debug); + + if (dbenv == NULL) goto exit; + *rval = JSVAL_FALSE; + + /* FIXME todo++ */ + + ok = JS_TRUE; + +exit: + return ok; +} + +static JSBool rpmdbe_Open(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { void * ptr = JS_GetInstancePrivate(cx, obj, &rpmdbeClass, NULL); @@ -266,6 +407,157 @@ } static JSBool +rpmdbe_RepElect(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) +{ + void * ptr = JS_GetInstancePrivate(cx, obj, &rpmdbeClass, NULL); + DB_ENV * dbenv = ptr; + JSBool ok = JS_FALSE; + +_METHOD_DEBUG_ENTRY(_debug); + + if (dbenv == NULL) goto exit; + *rval = JSVAL_FALSE; + + /* FIXME todo++ */ + + ok = JS_TRUE; + +exit: + return ok; +} + +static JSBool +rpmdbe_RepProcessMessage(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) +{ + void * ptr = JS_GetInstancePrivate(cx, obj, &rpmdbeClass, NULL); + DB_ENV * dbenv = ptr; + JSBool ok = JS_FALSE; + +_METHOD_DEBUG_ENTRY(_debug); + + if (dbenv == NULL) goto exit; + *rval = JSVAL_FALSE; + + /* FIXME todo++ */ + + ok = JS_TRUE; + +exit: + return ok; +} + +static JSBool +rpmdbe_RepStart(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) +{ + void * ptr = JS_GetInstancePrivate(cx, obj, &rpmdbeClass, NULL); + DB_ENV * dbenv = ptr; + JSBool ok = JS_FALSE; + +_METHOD_DEBUG_ENTRY(_debug); + + if (dbenv == NULL) goto exit; + *rval = JSVAL_FALSE; + + /* FIXME todo++ */ + + ok = JS_TRUE; + +exit: + return ok; +} + +static JSBool +rpmdbe_RepStat(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) +{ + void * ptr = JS_GetInstancePrivate(cx, obj, &rpmdbeClass, NULL); + DB_ENV * dbenv = ptr; + uint32_t _flags = DB_STAT_ALL; + JSBool ok = JS_FALSE; + +_METHOD_DEBUG_ENTRY(_debug); + + if (dbenv == NULL) goto exit; + *rval = JSVAL_FALSE; + + if (!(ok = JS_ConvertArguments(cx, argc, argv, "/u", &_flags))) + goto exit; + + if (dbenv->app_private != NULL) { + DB_REP_STAT * _stat = NULL; + int ret = dbenv->rep_stat(dbenv, &_stat, _flags); + if (ret) + dbenv->err(dbenv, ret, "DB_ENV->rep_stat"); + else + *rval = JSVAL_TRUE; + } + + ok = JS_TRUE; + +exit: + return ok; +} + +static JSBool +rpmdbe_RepStatPrint(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) +{ + void * ptr = JS_GetInstancePrivate(cx, obj, &rpmdbeClass, NULL); + DB_ENV * dbenv = ptr; + uint32_t _flags = DB_STAT_ALL; + JSBool ok = JS_FALSE; + +_METHOD_DEBUG_ENTRY(_debug); + + if (dbenv == NULL) goto exit; + *rval = JSVAL_FALSE; + + if (!(ok = JS_ConvertArguments(cx, argc, argv, "/u", &_flags))) + goto exit; + + if (dbenv->app_private != NULL) { + int ret = dbenv->rep_stat_print(dbenv, _flags); + if (ret) + dbenv->err(dbenv, ret, "DB_ENV->rep_stat_print"); + else + *rval = JSVAL_TRUE; + } + + ok = JS_TRUE; + +exit: + return ok; +} + +static JSBool +rpmdbe_RepSync(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) +{ + void * ptr = JS_GetInstancePrivate(cx, obj, &rpmdbeClass, NULL); + DB_ENV * dbenv = ptr; + uint32_t _flags = 0; + JSBool ok = JS_FALSE; + +_METHOD_DEBUG_ENTRY(_debug); + + if (dbenv == NULL) goto exit; + *rval = JSVAL_FALSE; + + if (!(ok = JS_ConvertArguments(cx, argc, argv, "/u", &_flags))) + goto exit; + + if (dbenv->app_private != NULL) { + int ret = dbenv->rep_sync(dbenv, _flags); + if (ret) + dbenv->err(dbenv, ret, "DB_ENV->rep_sync"); + else + *rval = JSVAL_TRUE; + } + + ok = JS_TRUE; + +exit: + return ok; +} + +static JSBool rpmdbe_RepmgrStart(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { void * ptr = JS_GetInstancePrivate(cx, obj, &rpmdbeClass, NULL); @@ -290,6 +582,7 @@ { void * ptr = JS_GetInstancePrivate(cx, obj, &rpmdbeClass, NULL); DB_ENV * dbenv = ptr; + uint32_t _flags = DB_STAT_ALL; JSBool ok = JS_FALSE; _METHOD_DEBUG_ENTRY(_debug); @@ -297,7 +590,17 @@ if (dbenv == NULL) goto exit; *rval = JSVAL_FALSE; - /* FIXME todo++ */ + if (!(ok = JS_ConvertArguments(cx, argc, argv, "/u", &_flags))) + goto exit; + + if (dbenv->app_private != NULL) { + DB_REPMGR_STAT * _stat = NULL; + int ret = dbenv->repmgr_stat(dbenv, &_stat, _flags); + if (ret) + dbenv->err(dbenv, ret, "DB_ENV->repmgr_stat"); + else + *rval = JSVAL_TRUE; + } ok = JS_TRUE; @@ -310,6 +613,7 @@ { void * ptr = JS_GetInstancePrivate(cx, obj, &rpmdbeClass, NULL); DB_ENV * dbenv = ptr; + uint32_t _flags = DB_STAT_ALL; JSBool ok = JS_FALSE; _METHOD_DEBUG_ENTRY(_debug); @@ -317,7 +621,16 @@ if (dbenv == NULL) goto exit; *rval = JSVAL_FALSE; - /* FIXME todo++ */ + if (!(ok = JS_ConvertArguments(cx, argc, argv, "/u", &_flags))) + goto exit; + + if (dbenv->app_private != NULL) { + int ret = dbenv->repmgr_stat_print(dbenv, _flags); + if (ret) + dbenv->err(dbenv, ret, "DB_ENV->repmgr_stat_print"); + else + *rval = JSVAL_TRUE; + } ok = JS_TRUE; @@ -420,6 +733,7 @@ { void * ptr = JS_GetInstancePrivate(cx, obj, &rpmdbeClass, NULL); DB_ENV * dbenv = ptr; + uint32_t _flags = DB_STAT_ALL; JSBool ok = JS_FALSE; _METHOD_DEBUG_ENTRY(_debug); @@ -427,7 +741,17 @@ if (dbenv == NULL) goto exit; *rval = JSVAL_FALSE; - /* FIXME todo++ */ + if (!(ok = JS_ConvertArguments(cx, argc, argv, "/u", &_flags))) + goto exit; + + if (dbenv->app_private != NULL) { + DB_TXN_STAT * _stat = NULL; + int ret = dbenv->txn_stat(dbenv, &_stat, _flags); + if (ret) + dbenv->err(dbenv, ret, "DB_ENV->txn_stat"); + else + *rval = JSVAL_TRUE; + } ok = JS_TRUE; @@ -440,6 +764,7 @@ { void * ptr = JS_GetInstancePrivate(cx, obj, &rpmdbeClass, NULL); DB_ENV * dbenv = ptr; + uint32_t _flags = DB_STAT_ALL; JSBool ok = JS_FALSE; _METHOD_DEBUG_ENTRY(_debug); @@ -447,7 +772,16 @@ if (dbenv == NULL) goto exit; *rval = JSVAL_FALSE; - /* FIXME todo++ */ + if (!(ok = JS_ConvertArguments(cx, argc, argv, "/u", &_flags))) + goto exit; + + if (dbenv->app_private != NULL) { + int ret = dbenv->txn_stat_print(dbenv, _flags); + if (ret) + dbenv->err(dbenv, ret, "DB_ENV->txn_stat_print"); + else + *rval = JSVAL_TRUE; + } ok = JS_TRUE; @@ -462,8 +796,20 @@ JS_FS("dbrename", rpmdbe_Dbrename, 0,0,0), JS_FS("fileid_reset", rpmdbe_FileidReset, 0,0,0), JS_FS("lsn_reset", rpmdbe_LsnReset, 0,0,0), + JS_FS("mutex_alloc", rpmdbe_MutexAlloc, 0,0,0), + JS_FS("mutex_free", rpmdbe_MutexFree, 0,0,0), + JS_FS("mutex_lock", rpmdbe_MutexLock, 0,0,0), + JS_FS("mutex_stat", rpmdbe_MutexStat, 0,0,0), + JS_FS("mutex_stat_print", rpmdbe_MutexStatPrint, 0,0,0), + JS_FS("mutex_unlock", rpmdbe_MutexUnlock, 0,0,0), JS_FS("open", rpmdbe_Open, 0,0,0), JS_FS("remove", rpmdbe_Remove, 0,0,0), + JS_FS("rep_elect", rpmdbe_RepElect, 0,0,0), + JS_FS("rep_process_message", rpmdbe_RepProcessMessage, 0,0,0), + JS_FS("rep_start", rpmdbe_RepStart, 0,0,0), + JS_FS("rep_stat", rpmdbe_RepStat, 0,0,0), + JS_FS("rep_stat_print", rpmdbe_RepStatPrint, 0,0,0), + JS_FS("rep_sync", rpmdbe_RepSync, 0,0,0), JS_FS("repmgr_start", rpmdbe_RepmgrStart, 0,0,0), JS_FS("repmgr_stat", rpmdbe_RepmgrStat, 0,0,0), JS_FS("repmgr_stat_print", rpmdbe_RepmgrStatPrint, 0,0,0), @@ -495,7 +841,7 @@ _SHMKEY = -13, _THREADCNT = -14, - _LKTIMEOUT = -15, + _DB_SET_LOCK_TIMEOUT = -15, _TMPDIR = -16, _VERBOSE = -17, @@ -518,7 +864,7 @@ _LGMAX = -32, _LGREGIONMAX = -33, - _TXNTIMEOUT = -34, + _DB_SET_TXN_TIMEOUT = -34, _VERSION = -35, _MAJOR = -36, @@ -583,7 +929,7 @@ {"msgfile", _MSGFILE, JSPROP_ENUMERATE, NULL, NULL}, {"shm_key", _SHMKEY, JSPROP_ENUMERATE, NULL, NULL}, {"thread_count", _THREADCNT, JSPROP_ENUMERATE, NULL, NULL}, - {"lock_timeout", _LKTIMEOUT, JSPROP_ENUMERATE, NULL, NULL}, + {"tmp_dir", _TMPDIR, JSPROP_ENUMERATE, NULL, NULL}, {"verbose", _VERBOSE, JSPROP_ENUMERATE, NULL, NULL}, {"lk_conflicts", _LKCONFLICTS, JSPROP_ENUMERATE, NULL, NULL}, @@ -604,7 +950,9 @@ {"lg_filemode", _LGFILEMODE, JSPROP_ENUMERATE, NULL, NULL}, {"lg_max", _LGMAX, JSPROP_ENUMERATE, NULL, NULL}, {"lg_regionmax", _LGREGIONMAX, JSPROP_ENUMERATE, NULL, NULL}, - {"txn_timeout", _TXNTIMEOUT, JSPROP_ENUMERATE, NULL, NULL}, + + { _TABLE(DB_SET_LOCK_TIMEOUT) }, + { _TABLE(DB_SET_TXN_TIMEOUT) }, {"reg_timeout", _REGTIMEOUT, JSPROP_ENUMERATE, NULL, NULL}, {"cachemax", _CACHEMAX, JSPROP_ENUMERATE, NULL, NULL}, @@ -730,12 +1078,14 @@ case _THREADCNT: *vp = _GET_U(!dbenv->get_thread_count(dbenv, &_u)); break; /* XXX FIXME assumes typedef uint32_t db_timeout_t; */ - case _LKTIMEOUT: - *vp = _GET_U(!dbenv->get_timeout(dbenv, (db_timeout_t *)&_u, DB_SET_LOCK_TIMEOUT)); - break; - case _TXNTIMEOUT: - *vp = _GET_U(!dbenv->get_timeout(dbenv, (db_timeout_t *)&_u, DB_SET_TXN_TIMEOUT)); +#define _JUMP(_v, _lbl) _##_v: _u = _v; goto _lbl + case _JUMP(DB_SET_LOCK_TIMEOUT, _get_timeout); + case _JUMP(DB_SET_TXN_TIMEOUT, _get_timeout); +#undef _JUMP + _get_timeout: + *vp = _GET_U(!dbenv->get_timeout(dbenv, (db_timeout_t *)&_u, _u)); break; + case _REGTIMEOUT: *vp = JSVAL_NULL; break; /* XXX FIXME */ case _TMPDIR: *vp = _GET_S(!dbenv->get_tmp_dir(dbenv, &_s)); break; @@ -793,17 +1143,17 @@ /* XXX FIXME: dbenv->rep_get_request(dbenv, u &min, u &max) */ #define _JUMP(_v, _lbl) _##_v: _i = _v; goto _lbl - case _JUMP(DB_REP_ACK_TIMEOUT, _get_timeout); - case _JUMP(DB_REP_CHECKPOINT_DELAY, _get_timeout); - case _JUMP(DB_REP_CONNECTION_RETRY, _get_timeout); - case _JUMP(DB_REP_ELECTION_TIMEOUT, _get_timeout); - case _JUMP(DB_REP_ELECTION_RETRY, _get_timeout); - case _JUMP(DB_REP_FULL_ELECTION_TIMEOUT, _get_timeout); - case _JUMP(DB_REP_HEARTBEAT_MONITOR, _get_timeout); - case _JUMP(DB_REP_HEARTBEAT_SEND, _get_timeout); - case _JUMP(DB_REP_LEASE_TIMEOUT, _get_timeout); + case _JUMP(DB_REP_ACK_TIMEOUT, _rep_get_timeout); + case _JUMP(DB_REP_CHECKPOINT_DELAY, _rep_get_timeout); + case _JUMP(DB_REP_CONNECTION_RETRY, _rep_get_timeout); + case _JUMP(DB_REP_ELECTION_TIMEOUT, _rep_get_timeout); + case _JUMP(DB_REP_ELECTION_RETRY, _rep_get_timeout); + case _JUMP(DB_REP_FULL_ELECTION_TIMEOUT, _rep_get_timeout); + case _JUMP(DB_REP_HEARTBEAT_MONITOR, _rep_get_timeout); + case _JUMP(DB_REP_HEARTBEAT_SEND, _rep_get_timeout); + case _JUMP(DB_REP_LEASE_TIMEOUT, _rep_get_timeout); #undef _JUMP - _get_timeout: + _rep_get_timeout: *vp = _GET_U(!dbenv->rep_get_timeout(dbenv, _i, &_u)); break; @@ -901,8 +1251,13 @@ case _SHMKEY: *vp = _PUT_L(dbenv->set_shm_key(dbenv, _l)); break; case _THREADCNT: *vp = _PUT_U(dbenv->set_thread_count(dbenv, _u)); break; - case _LKTIMEOUT: *vp = _PUT_U(dbenv->set_timeout(dbenv, (db_timeout_t)_u, DB_SET_LOCK_TIMEOUT)); break; - case _TXNTIMEOUT: *vp = _PUT_U(dbenv->set_timeout(dbenv, (db_timeout_t)_u, DB_SET_TXN_TIMEOUT)); break; +#define _JUMP(_v, _lbl) _##_v: _nc = _v; goto _lbl + case _JUMP(DB_SET_LOCK_TIMEOUT, _set_timeout); + case _JUMP(DB_SET_TXN_TIMEOUT, _set_timeout); +#undef _JUMP + _set_timeout: + *vp = _PUT_U(dbenv->set_timeout(dbenv, (db_timeout_t)_u, _nc)); + break; case _REGTIMEOUT: *vp = _PUT_U(dbenv->set_timeout(dbenv, (db_timeout_t)_u, DB_SET_REG_TIMEOUT)); break; case _TMPDIR: *vp = _PUT_S(dbenv->set_tmp_dir(dbenv, _s)); break; @@ -987,17 +1342,17 @@ /* XXX FIXME: dbenv->rep_set_request(dbenv, u min, u max) */ #define _JUMP(_v, _lbl) _##_v: _i = _v; goto _lbl - case _JUMP(DB_REP_ACK_TIMEOUT, _set_timeout); - case _JUMP(DB_REP_CHECKPOINT_DELAY, _set_timeout); - case _JUMP(DB_REP_CONNECTION_RETRY, _set_timeout); - case _JUMP(DB_REP_ELECTION_TIMEOUT, _set_timeout); - case _JUMP(DB_REP_ELECTION_RETRY, _set_timeout); - case _JUMP(DB_REP_FULL_ELECTION_TIMEOUT, _set_timeout); - case _JUMP(DB_REP_HEARTBEAT_MONITOR, _set_timeout); - case _JUMP(DB_REP_HEARTBEAT_SEND, _set_timeout); - case _JUMP(DB_REP_LEASE_TIMEOUT, _set_timeout); + case _JUMP(DB_REP_ACK_TIMEOUT, _rep_set_timeout); + case _JUMP(DB_REP_CHECKPOINT_DELAY, _rep_set_timeout); + case _JUMP(DB_REP_CONNECTION_RETRY, _rep_set_timeout); + case _JUMP(DB_REP_ELECTION_TIMEOUT, _rep_set_timeout); + case _JUMP(DB_REP_ELECTION_RETRY, _rep_set_timeout); + case _JUMP(DB_REP_FULL_ELECTION_TIMEOUT, _rep_set_timeout); + case _JUMP(DB_REP_HEARTBEAT_MONITOR, _rep_set_timeout); + case _JUMP(DB_REP_HEARTBEAT_SEND, _rep_set_timeout); + case _JUMP(DB_REP_LEASE_TIMEOUT, _rep_set_timeout); #undef _JUMP - _set_timeout: + _rep_set_timeout: *vp = _PUT_U(!dbenv->rep_set_timeout(dbenv, _i, _u)); break; @@ . patch -p0 <<'@@ .' Index: rpm/js/rpmtxn-js.c ============================================================================ $ cvs diff -u -r1.1 -r1.2 rpmtxn-js.c --- rpm/js/rpmtxn-js.c 22 Sep 2009 23:01:06 -0000 1.1 +++ rpm/js/rpmtxn-js.c 24 Sep 2009 05:13:05 -0000 1.2 @@ -14,7 +14,7 @@ #include "debug.h" /*...@unchecked@*/ -static int _debug = 0; +static int _debug = -1; /* Required JSClass vectors */ #define rpmtxn_addprop JS_PropertyStub @@ -52,10 +52,18 @@ enum rpmtxn_tinyid { _DEBUG = -2, + _NAME = -3, + _ID = -4, + _DB_SET_LOCK_TIMEOUT = -5, + _DB_SET_TXN_TIMEOUT = -6, }; static JSPropertySpec rpmtxn_props[] = { {"debug", _DEBUG, JSPROP_ENUMERATE, NULL, NULL}, + {"name", _NAME, JSPROP_ENUMERATE, NULL, NULL}, + {"id", _ID, JSPROP_ENUMERATE, NULL, NULL}, + { _TABLE(DB_SET_LOCK_TIMEOUT) }, + { _TABLE(DB_SET_TXN_TIMEOUT) }, {NULL, 0, 0, NULL, NULL} }; @@ -73,6 +81,8 @@ rpmtxn_getprop(JSContext *cx, JSObject *obj, jsval id, jsval *vp) { void * ptr = JS_GetInstancePrivate(cx, obj, &rpmtxnClass, NULL); + DB_TXN * txn = ptr; + const char * _s = NULL; jsint tiny = JSVAL_TO_INT(id); /* XXX the class has ptr == NULL, instances have ptr != NULL. */ @@ -83,7 +93,8 @@ case _DEBUG: *vp = INT_TO_JSVAL(_debug); break; - + case _NAME: *vp = _GET_S(!txn->get_name(txn, &_s)); break; + case _ID: *vp = INT_TO_JSVAL(txn->id(txn)); break; default: break; } @@ -104,17 +115,21 @@ rpmtxn_setprop(JSContext *cx, JSObject *obj, jsval id, jsval *vp) { void * ptr = JS_GetInstancePrivate(cx, obj, &rpmtxnClass, NULL); + DB_TXN * txn = ptr; + const char * _s = NULL; + uint32_t _u = 0; + uint32_t _nc = 0; jsint tiny = JSVAL_TO_INT(id); /* XXX the class has ptr == NULL, instances have ptr != NULL. */ if (ptr == NULL) return JS_TRUE; -#ifdef NOTYET if (JSVAL_IS_STRING(*vp)) _s = JS_GetStringBytes(JS_ValueToString(cx, *vp)); +#ifdef NOTYET if (JSVAL_IS_INT(*vp)) - _l = _u = _i = JSVAL_TO_INT(*vp); + _u = JSVAL_TO_INT(*vp); #endif switch (tiny) { @@ -122,6 +137,14 @@ if (!JS_ValueToInt32(cx, *vp, &_debug)) break; break; + case _NAME: *vp = _PUT_S(txn->set_name(txn, _s)); break; +#define _JUMP(_v, _lbl) _##_v: _nc = _v; goto _lbl + case _JUMP(DB_SET_LOCK_TIMEOUT, _set_timeout); + case _JUMP(DB_SET_TXN_TIMEOUT, _set_timeout); +#undef _JUMP + _set_timeout: + *vp = _PUT_U(txn->set_timeout(txn, (db_timeout_t)_u, _nc)); + break; default: break; @@ . patch -p0 <<'@@ .' Index: rpm/js/tjs.c ============================================================================ $ cvs diff -u -r1.56 -r1.57 tjs.c --- rpm/js/tjs.c 24 Sep 2009 02:59:04 -0000 1.56 +++ rpm/js/tjs.c 24 Sep 2009 05:13:05 -0000 1.57 @@ -76,10 +76,10 @@ { "Bc", rpmjs_InitBcClass, -40 }, /* todo++ */ { "Bf", rpmjs_InitBfClass, -26 }, - { "Db", rpmjs_InitDbClass, 45 }, - { "Dbc", rpmjs_InitDbcClass, 46 }, - { "Dbe", rpmjs_InitDbeClass, 44 }, - { "Txn", rpmjs_InitTxnClass, -47 }, + { "Db", rpmjs_InitDbClass, -45 }, + { "Dbc", rpmjs_InitDbcClass, -46 }, + { "Dbe", rpmjs_InitDbeClass, -44 }, + { "Txn", rpmjs_InitTxnClass, 47 }, { "Dc", rpmjs_InitDcClass, -28 }, { "Dig", rpmjs_InitDigClass, -37 }, /* todo++ */ @@ -96,7 +96,7 @@ { "Mc", rpmjs_InitMcClass, -24 }, { "Mg", rpmjs_InitMgClass, -31 }, { "Mi", rpmjs_InitMiClass, -11 }, - { "Mpw", rpmjs_InitMpwClass, -41 }, /* todo++ */ + { "Mpw", rpmjs_InitMpwClass, -41 }, { "Ps", rpmjs_InitPsClass, -16 }, { "Sm", rpmjs_InitSmClass, -43 }, /* todo++ */ { "Sp", rpmjs_InitSpClass, -42 }, /* todo++ */ @@ . patch -p0 <<'@@ .' Index: rpm/js/tscripts/Dbe.js ============================================================================ $ cvs diff -u -r1.4 -r1.5 Dbe.js --- rpm/js/tscripts/Dbe.js 24 Sep 2009 02:59:04 -0000 1.4 +++ rpm/js/tscripts/Dbe.js 24 Sep 2009 05:13:05 -0000 1.5 @@ -178,11 +178,11 @@ ack('dbenv.mutex_spins', 1); // ack('dbenv.mutex_spins = 1', true); -ack('dbenv.lock_timeout', 0); -// ack('dbenv.lock_timeout = 0', true); +ack('dbenv.DB_SET_LOCK_TIMEOUT', 0); +// ack('dbenv.DB_SET_LOCK_TIMEOUT = 0', true); -ack('dbenv.txn_timeout', 0); -// ack('dbenv.txn_timeout = 0', true); +ack('dbenv.DB_SET_TXN_TIMEOUT', 0); +// ack('dbenv.DB_SET_TXN_TIMEOUT = 0', true); ack('dbenv.tmp_dir', './tmp'); @@ . ______________________________________________________________________ RPM Package Manager http://rpm5.org CVS Sources Repository [email protected]
