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; }
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; }
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; }