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]

Reply via email to