Couchbase C Client  3.3.14
Asynchronous C Client for Couchbase
kvbuf.h
Go to the documentation of this file.
1/* -*- Mode: C; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2/*
3 * Copyright 2014-2020 Couchbase, Inc.
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18#ifndef LCB_KVBUF_H
19#define LCB_KVBUF_H
20
27#ifdef __cplusplus
28extern "C" {
29#endif
30
45
46#define LCB_KV_HEADER_AND_KEY LCB_KV_CONTIG
47
51typedef struct lcb_CONTIGBUF {
52 const void *bytes;
54 size_t nbytes;
56
58typedef struct lcb_KEYBUF {
69 lcb_CONTIGBUF contig;
70 lcb_U16 vbid;
72
74#define LCB_KEYBUF_IS_EMPTY(k) (k)->contig.nbytes == 0
75
83#define LCB_KREQ_SIMPLE(req, k, nk) \
84 do { \
85 (req)->type = LCB_KV_COPY; \
86 (req)->contig.bytes = k; \
87 (req)->contig.nbytes = nk; \
88 } while (0)
89
94typedef struct lcb_FRAGBUF {
97
99 unsigned int niov;
100
105 unsigned int total_length;
107
109typedef struct lcb_VALBUF {
122 union {
123 lcb_CONTIGBUF contig;
124 lcb_FRAGBUF multi;
125 } u_buf;
126} lcb_VALBUF;
127
128#ifdef __cplusplus
129}
130#endif
131#endif
structure indicating a buffer and its size
Definition iops.h:78
unsigned int total_length
Total length of the items.
Definition kvbuf.h:105
lcb_KVBUFTYPE
Flags indicating the storage policy for a buffer.
Definition kvbuf.h:32
@ LCB_KV_VBID
Indicates that the precomputed vBucket ID should be used.
Definition kvbuf.h:37
@ LCB_KV_IOVCOPY
The buffers are not contiguous (multi-part buffers) but should be copied.
Definition kvbuf.h:43
@ LCB_KV_CONTIG
The buffer is contiguous and should not be copied.
Definition kvbuf.h:34
@ LCB_KV_COPY
The buffer should be copied.
Definition kvbuf.h:33
@ LCB_KV_IOV
The buffer is not contiguous and should not be copied.
Definition kvbuf.h:35
lcb_KVBUFTYPE vtype
Value request type.
Definition kvbuf.h:121
size_t nbytes
Number of total bytes.
Definition kvbuf.h:54
lcb_KVBUFTYPE type
The type of key to provide.
Definition kvbuf.h:68
unsigned int niov
Number of elements in iov array.
Definition kvbuf.h:99
lcb_U16 vbid
precomputed vbucket id
Definition kvbuf.h:70
lcb_IOV * iov
An IOV array.
Definition kvbuf.h:96
simple buf/length structure for a contiguous series of bytes
Definition kvbuf.h:51
Structure for an IOV buffer to be supplied as a buffer.
Definition kvbuf.h:94
Common request header for all keys.
Definition kvbuf.h:58
Structure representing a value to be stored.
Definition kvbuf.h:109