Main Page
Modules
Data Structures
Files
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
src
include
citrusleaf
cl_kv.h
Go to the documentation of this file.
1
/******************************************************************************
2
* Copyright 2008-2013 by Aerospike.
3
*
4
* Permission is hereby granted, free of charge, to any person obtaining a copy
5
* of this software and associated documentation files (the "Software"), to
6
* deal in the Software without restriction, including without limitation the
7
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
8
* sell copies of the Software, and to permit persons to whom the Software is
9
* furnished to do so, subject to the following conditions:
10
*
11
* The above copyright notice and this permission notice shall be included in
12
* all copies or substantial portions of the Software.
13
*
14
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
20
* IN THE SOFTWARE.
21
*****************************************************************************/
22
#pragma once
23
24
#include <
citrusleaf/cl_types.h
>
25
#include <
citrusleaf/cl_cluster.h
>
26
#include <
citrusleaf/cl_write.h
>
27
28
/******************************************************************************
29
* FUNCTIONS
30
******************************************************************************/
31
32
/**
33
* get-all will malloc an array of values and return all current values for a row.
34
* thus, it is SELECT * in SQL. So pass in a pointer to cl_value to be filled, and a
35
* pointer-to-int to know how many.
36
*
37
* The memory contract with get_all is that the bins pointer (*bins) must be freed by the caller.
38
* The data you've actually retrieved (cl_object->u.str ; cl->object->u.blob) has been allocated using malloc.
39
* You may use it for your own purposes, transfer it to another program, or you must free it.
40
* citrusleaf_object_free() will free the internal memory in these cases,
41
* or you can call citrusleaf_bins_free and it will take care of all memory.
42
*
43
* Note this is different from getting a specific set of bins, where the bin array was passed in.
44
* (the simple 'get') See that call for information there.
45
*/
46
47
cl_rv
citrusleaf_get_all
(cl_cluster *asc,
const
char
*
ns
,
const
char
*set,
const
cl_object
*
key
,
const
cf_digest *d,
cl_bin
**bins,
int
*n_bins,
int
timeout_ms, uint32_t *cl_gen, uint32_t* cl_ttl);
48
cl_rv
citrusleaf_get_all_digest
(cl_cluster *asc,
const
char
*
ns
,
const
cf_digest *d,
cl_bin
**bins,
int
*n_bins,
int
timeout_ms, uint32_t *cl_gen, uint32_t* cl_ttl);
49
cl_rv
citrusleaf_get_all_digest_getsetname
(cl_cluster *asc,
const
char
*
ns
,
const
cf_digest *d,
cl_bin
**bins,
int
*n_bins,
int
timeout_ms, uint32_t *cl_gen,
char
**setname, uint32_t* cl_ttl);
50
51
/**
52
* Put is like insert. Create a list of bins, and call this function to set them.
53
*/
54
cl_rv
citrusleaf_put
(cl_cluster *asc,
const
char
*
ns
,
const
char
*set,
const
cl_object
*
key
,
bool
check_key,
const
cf_digest *d,
const
cl_bin
*bins,
int
n_bins,
const
cl_write_parameters
*cl_w_p);
55
cl_rv
citrusleaf_put_digest
(cl_cluster *asc,
const
char
*
ns
,
const
cf_digest *d,
const
cl_bin
*bins,
int
n_bins,
const
cl_write_parameters
*cl_w_p);
56
cl_rv
citrusleaf_put_digest_with_setname
(cl_cluster *asc,
const
char
*
ns
,
const
char
*set,
const
cf_digest *d,
const
cl_bin
*bins,
int
n_bins,
const
cl_write_parameters
*cl_w_p);
57
cl_rv
citrusleaf_restore
(cl_cluster *asc,
const
char
*
ns
,
const
cf_digest *digest,
const
char
*set,
const
cl_bin
*values,
int
n_values,
const
cl_write_parameters
*cl_w_p);
58
59
/**
60
* Async versions of the put calls
61
*/
62
cl_rv
citrusleaf_async_put
(cl_cluster *asc,
const
char
*
ns
,
const
char
*set,
const
cl_object
*
key
,
const
cl_bin
*bins,
int
n_bins,
const
cl_write_parameters
*cl_w_p, uint64_t trid,
void
*udata);
63
cl_rv
citrusleaf_async_put_digest
(cl_cluster *asc,
const
char
*
ns
,
const
cf_digest *d,
char
*setname,
const
cl_bin
*bins,
int
n_bins,
const
cl_write_parameters
*cl_w_p, uint64_t trid,
void
*udata);
64
cl_rvclient
citrusleaf_check_cluster_health
(cl_cluster *asc);
65
cl_rv
citrusleaf_async_delete_digest
(cl_cluster *asc,
const
char
*
ns
,
const
cf_digest *digest,
const
cl_write_parameters
*cl_w_p,
void
*udata);
66
67
/**
68
* Get is like select in SQL. Create a list of bins to get, and call this function to retrieve
69
* the values.
70
*/
71
cl_rv
citrusleaf_get
(cl_cluster *asc,
const
char
*
ns
,
const
char
*set,
const
cl_object
*
key
,
const
cf_digest *d,
cl_bin
*bins,
int
n_bins,
int
timeout_ms, uint32_t *cl_gen, uint32_t* cl_ttl);
72
cl_rv
citrusleaf_get_digest
(cl_cluster *asc,
const
char
*
ns
,
const
cf_digest *d,
cl_bin
*bins,
int
n_bins,
int
timeout_ms, uint32_t *cl_gen, uint32_t* cl_ttl);
73
74
/**
75
* Delete simply wipes this single key off the face of the earth.
76
*/
77
cl_rv
citrusleaf_delete
(cl_cluster *asc,
const
char
*
ns
,
const
char
*set,
const
cl_object
*
key
,
const
cf_digest *d,
const
cl_write_parameters
*cl_w_p);
78
cl_rv
citrusleaf_delete_digest
(cl_cluster *asc,
const
char
*
ns
,
const
cf_digest *d,
const
cl_write_parameters
*cl_w_p);
79
80
/**
81
* Efficiently determine if the key exists.
82
* (Note: The bins are currently ignored but may be testable in the future.)
83
*/
84
cl_rv
citrusleaf_exists_key
(cl_cluster *asc,
const
char
*
ns
,
const
char
*set,
const
cl_object
*
key
,
const
cf_digest *d,
cl_bin
*bins,
int
n_bins,
int
timeout_ms, uint32_t *cl_gen, uint32_t* cl_ttl);
85
cl_rv
citrusleaf_exists_digest
(cl_cluster *asc,
const
char
*
ns
,
const
cf_digest *d,
cl_bin
*bins,
int
n_bins,
int
timeout_ms, uint32_t *cl_gen, uint32_t* cl_ttl);