LIBCOUCHBASE_API lcb_error_t lcb_get(lcb_t instance, const void *command_cookie, lcb_size_t num, const lcb_get_cmd_t *const *items) { unsigned ii; mcreq_sched_enter(&instance->cmdq); for (ii = 0; ii < num; ii++) { const lcb_get_cmd_t *src = items[ii]; lcb_CMDGET 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.lock = src->v.v0.lock; dst.exptime = src->v.v0.exptime; err = lcb_get3(instance, command_cookie, &dst); if (err != LCB_SUCCESS) { mcreq_sched_fail(&instance->cmdq); return err; } } mcreq_sched_leave(&instance->cmdq, 1); SYNCMODE_INTERCEPT(instance) }
LIBCOUCHBASE_API lcb_error_t lcb_get_replica(lcb_t instance, const void *cookie, lcb_size_t num, const lcb_get_replica_cmd_t * const * items) { unsigned ii; lcb_error_t err = LCB_SUCCESS; mcreq_sched_enter(&instance->cmdq); for (ii = 0; ii < num; ii++) { const lcb_get_replica_cmd_t *src = items[ii]; lcb_CMDGETREPLICA dst; memset(&dst, 0, sizeof(dst)); dst.key.contig.bytes = src->v.v1.key; dst.key.contig.nbytes = src->v.v1.nkey; dst.hashkey.contig.bytes = src->v.v1.hashkey; dst.hashkey.contig.nbytes = src->v.v1.nhashkey; dst.strategy = src->v.v1.strategy; dst.index = src->v.v1.index; err = lcb_rget3(instance, cookie, &dst); if (err != LCB_SUCCESS) { break; } } if (err == LCB_SUCCESS) { mcreq_sched_leave(&instance->cmdq, 1); SYNCMODE_INTERCEPT(instance) } else {
LIBCOUCHBASE_API lcb_error_t lcb_store(lcb_t instance, const void *cookie, lcb_size_t num, const lcb_store_cmd_t * const * items) { unsigned ii; lcb_error_t err = LCB_SUCCESS; mcreq_sched_enter(&instance->cmdq); for (ii = 0; ii < num; ii++) { const lcb_store_cmd_t *src = items[ii]; lcb_CMDSTORE dst; 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.value.u_buf.contig.bytes = src->v.v0.bytes; dst.value.u_buf.contig.nbytes = src->v.v0.nbytes; dst.operation = src->v.v0.operation; dst.flags = src->v.v0.flags; dst.datatype = src->v.v0.datatype; dst.cas = src->v.v0.cas; dst.exptime = src->v.v0.exptime; err = lcb_store3(instance, cookie, &dst); if (err != LCB_SUCCESS) { mcreq_sched_fail(&instance->cmdq); return err; } } mcreq_sched_leave(&instance->cmdq, 1); SYNCMODE_INTERCEPT(instance) }
LIBCOUCHBASE_API lcb_error_t lcb_unlock(lcb_t instance, const void *cookie, lcb_size_t num, const lcb_unlock_cmd_t * const * items) { unsigned ii; lcb_error_t err = LCB_SUCCESS; mcreq_sched_enter(&instance->cmdq); for (ii = 0; ii < num; ii++) { const lcb_unlock_cmd_t *src = items[ii]; lcb_CMDUNLOCK dst; 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.cas = src->v.v0.cas; err = lcb_unlock3(instance, cookie, &dst); if (err != LCB_SUCCESS) { break; } } if (err != LCB_SUCCESS) { mcreq_sched_fail(&instance->cmdq); return err; } else { mcreq_sched_leave(&instance->cmdq, 1); SYNCMODE_INTERCEPT(instance) } }
LIBCOUCHBASE_API lcb_error_t lcb_arithmetic(lcb_t instance, const void *cookie, lcb_size_t num, const lcb_arithmetic_cmd_t *const *items) { unsigned ii; mcreq_sched_enter(&instance->cmdq); for (ii = 0; ii < num; ii++) { const lcb_arithmetic_cmd_t *src = items[ii]; lcb_CMDCOUNTER dst; lcb_error_t err; memset(&dst, 0, sizeof(dst)); dst.create = src->v.v0.create; dst.delta = src->v.v0.delta; dst.initial = src->v.v0.initial; dst.key.type = LCB_KV_COPY; dst.key.contig.bytes = src->v.v0.key; dst.key.contig.nbytes = src->v.v0.nkey; dst._hashkey.type = LCB_KV_COPY; dst._hashkey.contig.bytes = src->v.v0.hashkey; dst._hashkey.contig.nbytes = src->v.v0.nhashkey; dst.exptime = src->v.v0.exptime; err = lcb_counter3(instance, cookie, &dst); if (err != LCB_SUCCESS) { mcreq_sched_fail(&instance->cmdq); return err; } } mcreq_sched_leave(&instance->cmdq, 1); SYNCMODE_INTERCEPT(instance) }