Couchbase C Client  2.4.4
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 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
28 extern "C" {
29 #endif
30 
31 
33 typedef enum {
38 
39 #define LCB_KV_HEADER_AND_KEY LCB_KV_CONTIG
40 
44 typedef struct lcb_CONTIGBUF {
45  const void *bytes;
47  lcb_size_t nbytes;
49 
51 typedef struct lcb_KEYBUF {
62  lcb_CONTIGBUF contig;
63 } lcb_KEYBUF;
64 
66 #define LCB_KEYBUF_IS_EMPTY(k) (k)->contig.nbytes == 0
67 
75 #define LCB_KREQ_SIMPLE(req, k, nk) do { \
76  (req)->type = LCB_KV_COPY; \
77  (req)->contig.bytes = k; \
78  (req)->contig.nbytes = nk; \
79 } while (0);
80 
85 typedef struct lcb_FRAGBUF {
88 
90  unsigned int niov;
91 
96  unsigned int total_length;
97 } lcb_FRAGBUF;
98 
100 typedef struct lcb_VALBUF {
113  union {
114  lcb_CONTIGBUF contig;
115  lcb_FRAGBUF multi;
116  } u_buf;
117 } lcb_VALBUF;
118 
119 #ifdef __cplusplus
120 }
121 #endif
122 #endif
lcb_KVBUFTYPE vtype
Value request type.
Definition: kvbuf.h:112
structure indicating a buffer and its size
Definition: iops.h:84
lcb_KVBUFTYPE
Flags indicating the storage policy for a buffer.
Definition: kvbuf.h:33
lcb_KVBUFTYPE type
The type of key to provide.
Definition: kvbuf.h:61
The buffer should be copied.
Definition: kvbuf.h:34
unsigned int total_length
Total length of the items.
Definition: kvbuf.h:96
The buffer is not contiguous and should not be copied.
Definition: kvbuf.h:36
lcb_size_t nbytes
Number of total bytes.
Definition: kvbuf.h:47
The buffer is contiguous and should not be copied.
Definition: kvbuf.h:35
Structure for an IOV buffer to be supplied as a buffer.
Definition: kvbuf.h:85
lcb_IOV * iov
An IOV array.
Definition: kvbuf.h:87
simple buf/length structure for a contiguous series of bytes
Definition: kvbuf.h:44
Common request header for all keys.
Definition: kvbuf.h:51
Structure representing a value to be stored.
Definition: kvbuf.h:100
unsigned int niov
Number of elements in iov array.
Definition: kvbuf.h:90