コード例 #1
0
ファイル: values.c プロジェクト: acm7/couchstore
static view_btree_value_t *test_view_btree_value_decoding(const char *value_bin,
                                                          size_t len)
{
    view_btree_value_t *v = NULL;

    assert(decode_view_btree_value(value_bin, len, &v) == COUCHSTORE_SUCCESS);
    assert(v != NULL);

    assert(v->partition == 10);
    assert(v->num_values == 2);

    assert(v->values[0].size == 4);
    assert(memcmp(v->values[0].buf, "6155", v->values[0].size) == 0);
    assert(v->values[1].size == 4);
    assert(memcmp(v->values[1].buf, "6154", v->values[0].size) == 0);

    return v;
}
コード例 #2
0
int view_btree_filter(const sized_buf *k, const sized_buf *v,
                                          const bitmap_t *bm)
{
    int ret = 0;
    couchstore_error_t errcode = COUCHSTORE_SUCCESS;
    view_btree_value_t *val = NULL;
    (void) k;

    errcode = decode_view_btree_value(v->buf, v->size, &val);
    if (errcode != COUCHSTORE_SUCCESS) {
        ret = (int) errcode;
        goto cleanup;
    }

    ret = is_bit_set(bm, val->partition);

cleanup:
    free_view_btree_value(val);
    return ret;
}
コード例 #3
0
ファイル: purgers.c プロジェクト: abhinavdangeti/couchstore
int view_btree_purge_kv(const sized_buf *key, const sized_buf *val, void *ctx)
{
    int action;
    couchstore_error_t errcode = COUCHSTORE_SUCCESS;
    view_purger_ctx_t *purge_ctx = (view_purger_ctx_t *) ctx;
    view_btree_value_t *v = NULL;
    (void) key;

    errcode = decode_view_btree_value(val->buf, val->size, &v);
    if (errcode != COUCHSTORE_SUCCESS) {
        action = (int) errcode;
        goto cleanup;
    }

    action = view_purgekv_action(&purge_ctx->cbitmask, v->partition,
                                                       v->num_values,
                                                       purge_ctx);

cleanup:
    free_view_btree_value(v);

    return action;
}