예제 #1
0
파일: hammy_db.c 프로젝트: Zabrane/hammy
int hammy_del(ErlNifEnv *env, hammy_db *db, unsigned char *key, int key_size) {
    ham_key_t k;
    ham_txn_t *txn;
    int retval = HAMMY_FALSE;

    setup_key(&k, key, key_size);

    ham_txn_begin(&txn, db->databases[0], HAM_TXN_READ_ONLY);
    if (ham_erase(db->databases[0], txn, &k, 0) == HAM_SUCCESS) {
        ham_txn_commit(txn, 0);
        retval = HAMMY_TRUE;
    }
    else {
        ham_txn_abort(txn, 0);
    }
    return retval;
}
예제 #2
0
파일: hammy_db.c 프로젝트: Zabrane/hammy
int hammy_put(ErlNifEnv *env, hammy_db *db, unsigned char *key, int key_size, unsigned char *value, int value_size) {
    ham_key_t k;
    ham_record_t rec;
    ham_txn_t *txn;
    int rc;

    setup_key(&k, key, key_size);
    setup_record(&rec, value, value_size);

    ham_txn_begin(&txn, db->databases[0], 0);
    rc = ham_insert(db->databases[0], txn, &k, &rec, HAM_OVERWRITE);
    if (rc == HAM_SUCCESS) {
        ham_txn_commit(txn, 0);
        return HAMMY_TRUE;
    }
    else {
        ham_txn_abort(txn, 0);
        return HAMMY_FALSE;
    }
}
예제 #3
0
 /** Abort the Transaction */
 void abort() {
   ham_status_t st = ham_txn_abort(m_txn, 0);
   if (st)
     throw error(st);
 }