Exemplo n.º 1
0
static void arithmetic_callback(lcb_t instance, const void *cookie,
                                lcb_error_t err,
                                const lcb_arithmetic_resp_t *resp)
{
    int rv;
    pycbc_ConnectionObject *conn = NULL;
    pycbc_ValueResultObject *res = NULL;
    pycbc_MultiResultObject *mres = NULL;

    rv = get_common_objects((PyObject*)cookie,
                            resp->v.v0.key,
                            resp->v.v0.nkey,
                            err,
                            &conn,
                            (pycbc_ResultBaseObject**)&res,
                            RESTYPE_VALUE,
                            &mres);
    if (rv == 0) {
        res->cas = resp->v.v0.cas;
        res->rc = err;
        if (err == LCB_SUCCESS) {
            res->value = pycbc_IntFromULL(resp->v.v0.value);
        }

        maybe_push_operr(mres, (pycbc_ResultBaseObject*)res, err, 0);
    }

    CB_THR_BEGIN(conn);
    (void)instance;
}
Exemplo n.º 2
0
static PyObject *
Bucket__instance_pointer(pycbc_Bucket *self, void *unused)
{
    PyObject *ret;
    Py_uintptr_t ptri = (Py_uintptr_t)self->instance;
    ret = pycbc_IntFromULL(ptri);
    (void)unused;
    return ret;
}
Exemplo n.º 3
0
static void
value_callback(lcb_t instance, int cbtype, const lcb_RESPBASE *resp)
{
    int rv;
    pycbc_Bucket *conn = NULL;
    pycbc_ValueResult *res = NULL;
    pycbc_MultiResult *mres = NULL;

    rv = get_common_objects(resp, &conn, (pycbc_Result**)&res, RESTYPE_VALUE,
        &mres);

    if (rv < 0) {
        goto GT_DONE;
    }

    if (resp->rc == LCB_SUCCESS) {
        res->cas = resp->cas;
    } else {
        maybe_push_operr(mres, (pycbc_Result*)res, resp->rc,
            cbtype != LCB_CALLBACK_COUNTER);
        goto GT_DONE;
    }

    if (cbtype == LCB_CALLBACK_GET || cbtype == LCB_CALLBACK_GETREPLICA) {
        const lcb_RESPGET *gresp = (const lcb_RESPGET *)resp;
        lcb_U32 eflags;

        res->flags = gresp->itmflags;
        if (mres->mropts & PYCBC_MRES_F_FORCEBYTES) {
            eflags = PYCBC_FMT_BYTES;
        } else {
            eflags = gresp->itmflags;
        }

        rv = pycbc_tc_decode_value(mres->parent, gresp->value, gresp->nvalue,
            eflags, &res->value);
        if (rv < 0) {
            pycbc_multiresult_adderr(mres);
        }
    } else if (cbtype == LCB_CALLBACK_COUNTER) {
        const lcb_RESPCOUNTER *cresp = (const lcb_RESPCOUNTER *)resp;
        res->value = pycbc_IntFromULL(cresp->value);
    }

    GT_DONE:
    operation_completed(conn, mres);
    CB_THR_BEGIN(conn);
    (void)instance;
}