LIBCOUCHBASE_API lcb_error_t lcb_touch(lcb_t instance, const void *cookie, lcb_size_t num, const lcb_touch_cmd_t * const * items) { mc_CMDQUEUE *cq = &instance->cmdq; unsigned ii; mcreq_sched_enter(&instance->cmdq); for (ii = 0; ii < num; ii++) { const lcb_touch_cmd_t *src = items[ii]; lcb_CMDTOUCH dst; lcb_error_t err; memset(&dst, 0, sizeof(dst)); dst.key.contig.bytes = src->v.v0.key; dst.key.contig.nbytes = src->v.v0.nkey; dst.hashkey.contig.bytes = src->v.v0.hashkey; dst.hashkey.contig.nbytes = src->v.v0.nhashkey; dst.exptime = src->v.v0.exptime; err = lcb_touch3(instance, cookie, &dst); if (err != LCB_SUCCESS) { mcreq_sched_fail(cq); return err; } } mcreq_sched_leave(cq, 1); SYNCMODE_INTERCEPT(instance) }
SV * PLCB_op_get(PLCB_t *object, plcb_SINGLEOP *opinfo) { lcb_error_t err = LCB_SUCCESS; lcb_CMDGET gcmd = { 0 }; PLCB_args_get(object, opinfo, &gcmd); key_from_so(opinfo, (lcb_CMDBASE*)&gcmd); if (opinfo->cmdbase == PLCB_CMD_TOUCH) { err = lcb_touch3(object->instance, opinfo->cookie, (lcb_CMDTOUCH*)&gcmd); } else { err = lcb_get3(object->instance, opinfo->cookie, &gcmd); } return plcb_opctx_return(opinfo, err); }