~ubuntu-branches/ubuntu/raring/ceph/raring

« back to all changes in this revision

Viewing changes to src/leveldb/include/leveldb/c.h

  • Committer: Package Import Robot
  • Author(s): James Page
  • Date: 2012-06-08 15:54:37 UTC
  • mfrom: (0.3.9)
  • mto: This revision was merged to the branch mainline in revision 13.
  • Revision ID: package-import@ubuntu.com-20120608155437-30vek4y2gu92vhad
Tags: upstream-0.44.1
ImportĀ upstreamĀ versionĀ 0.44.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* Copyright (c) 2011 The LevelDB Authors. All rights reserved.
 
2
  Use of this source code is governed by a BSD-style license that can be
 
3
  found in the LICENSE file. See the AUTHORS file for names of contributors.
 
4
 
 
5
  C bindings for leveldb.  May be useful as a stable ABI that can be
 
6
  used by programs that keep leveldb in a shared library, or for
 
7
  a JNI api.
 
8
 
 
9
  Does not support:
 
10
  . getters for the option types
 
11
  . custom comparators that implement key shortening
 
12
  . capturing post-write-snapshot
 
13
  . custom iter, db, env, cache implementations using just the C bindings
 
14
 
 
15
  Some conventions:
 
16
 
 
17
  (1) We expose just opaque struct pointers and functions to clients.
 
18
  This allows us to change internal representations without having to
 
19
  recompile clients.
 
20
 
 
21
  (2) For simplicity, there is no equivalent to the Slice type.  Instead,
 
22
  the caller has to pass the pointer and length as separate
 
23
  arguments.
 
24
 
 
25
  (3) Errors are represented by a null-terminated c string.  NULL
 
26
  means no error.  All operations that can raise an error are passed
 
27
  a "char** errptr" as the last argument.  One of the following must
 
28
  be true on entry:
 
29
     *errptr == NULL
 
30
     *errptr points to a malloc()ed null-terminated error message
 
31
  On success, a leveldb routine leaves *errptr unchanged.
 
32
  On failure, leveldb frees the old value of *errptr and
 
33
  set *errptr to a malloc()ed error message.
 
34
 
 
35
  (4) Bools have the type unsigned char (0 == false; rest == true)
 
36
 
 
37
  (5) All of the pointer arguments must be non-NULL.
 
38
*/
 
39
 
 
40
#ifndef STORAGE_LEVELDB_INCLUDE_C_H_
 
41
#define STORAGE_LEVELDB_INCLUDE_C_H_
 
42
 
 
43
#ifdef __cplusplus
 
44
extern "C" {
 
45
#endif
 
46
 
 
47
#include <stdarg.h>
 
48
#include <stddef.h>
 
49
#include <stdint.h>
 
50
 
 
51
/* Exported types */
 
52
 
 
53
typedef struct leveldb_t               leveldb_t;
 
54
typedef struct leveldb_cache_t         leveldb_cache_t;
 
55
typedef struct leveldb_comparator_t    leveldb_comparator_t;
 
56
typedef struct leveldb_env_t           leveldb_env_t;
 
57
typedef struct leveldb_filelock_t      leveldb_filelock_t;
 
58
typedef struct leveldb_iterator_t      leveldb_iterator_t;
 
59
typedef struct leveldb_logger_t        leveldb_logger_t;
 
60
typedef struct leveldb_options_t       leveldb_options_t;
 
61
typedef struct leveldb_randomfile_t    leveldb_randomfile_t;
 
62
typedef struct leveldb_readoptions_t   leveldb_readoptions_t;
 
63
typedef struct leveldb_seqfile_t       leveldb_seqfile_t;
 
64
typedef struct leveldb_snapshot_t      leveldb_snapshot_t;
 
65
typedef struct leveldb_writablefile_t  leveldb_writablefile_t;
 
66
typedef struct leveldb_writebatch_t    leveldb_writebatch_t;
 
67
typedef struct leveldb_writeoptions_t  leveldb_writeoptions_t;
 
68
 
 
69
/* DB operations */
 
70
 
 
71
extern leveldb_t* leveldb_open(
 
72
    const leveldb_options_t* options,
 
73
    const char* name,
 
74
    char** errptr);
 
75
 
 
76
extern void leveldb_close(leveldb_t* db);
 
77
 
 
78
extern void leveldb_put(
 
79
    leveldb_t* db,
 
80
    const leveldb_writeoptions_t* options,
 
81
    const char* key, size_t keylen,
 
82
    const char* val, size_t vallen,
 
83
    char** errptr);
 
84
 
 
85
extern void leveldb_delete(
 
86
    leveldb_t* db,
 
87
    const leveldb_writeoptions_t* options,
 
88
    const char* key, size_t keylen,
 
89
    char** errptr);
 
90
 
 
91
extern void leveldb_write(
 
92
    leveldb_t* db,
 
93
    const leveldb_writeoptions_t* options,
 
94
    leveldb_writebatch_t* batch,
 
95
    char** errptr);
 
96
 
 
97
/* Returns NULL if not found.  A malloc()ed array otherwise.
 
98
   Stores the length of the array in *vallen. */
 
99
extern char* leveldb_get(
 
100
    leveldb_t* db,
 
101
    const leveldb_readoptions_t* options,
 
102
    const char* key, size_t keylen,
 
103
    size_t* vallen,
 
104
    char** errptr);
 
105
 
 
106
extern leveldb_iterator_t* leveldb_create_iterator(
 
107
    leveldb_t* db,
 
108
    const leveldb_readoptions_t* options);
 
109
 
 
110
extern const leveldb_snapshot_t* leveldb_create_snapshot(
 
111
    leveldb_t* db);
 
112
 
 
113
extern void leveldb_release_snapshot(
 
114
    leveldb_t* db,
 
115
    const leveldb_snapshot_t* snapshot);
 
116
 
 
117
/* Returns NULL if property name is unknown.
 
118
   Else returns a pointer to a malloc()-ed null-terminated value. */
 
119
extern char* leveldb_property_value(
 
120
    leveldb_t* db,
 
121
    const char* propname);
 
122
 
 
123
extern void leveldb_approximate_sizes(
 
124
    leveldb_t* db,
 
125
    int num_ranges,
 
126
    const char* const* range_start_key, const size_t* range_start_key_len,
 
127
    const char* const* range_limit_key, const size_t* range_limit_key_len,
 
128
    uint64_t* sizes);
 
129
 
 
130
/* Management operations */
 
131
 
 
132
extern void leveldb_destroy_db(
 
133
    const leveldb_options_t* options,
 
134
    const char* name,
 
135
    char** errptr);
 
136
 
 
137
extern void leveldb_repair_db(
 
138
    const leveldb_options_t* options,
 
139
    const char* name,
 
140
    char** errptr);
 
141
 
 
142
/* Iterator */
 
143
 
 
144
extern void leveldb_iter_destroy(leveldb_iterator_t*);
 
145
extern unsigned char leveldb_iter_valid(const leveldb_iterator_t*);
 
146
extern void leveldb_iter_seek_to_first(leveldb_iterator_t*);
 
147
extern void leveldb_iter_seek_to_last(leveldb_iterator_t*);
 
148
extern void leveldb_iter_seek(leveldb_iterator_t*, const char* k, size_t klen);
 
149
extern void leveldb_iter_next(leveldb_iterator_t*);
 
150
extern void leveldb_iter_prev(leveldb_iterator_t*);
 
151
extern const char* leveldb_iter_key(const leveldb_iterator_t*, size_t* klen);
 
152
extern const char* leveldb_iter_value(const leveldb_iterator_t*, size_t* vlen);
 
153
extern void leveldb_iter_get_error(const leveldb_iterator_t*, char** errptr);
 
154
 
 
155
/* Write batch */
 
156
 
 
157
extern leveldb_writebatch_t* leveldb_writebatch_create();
 
158
extern void leveldb_writebatch_destroy(leveldb_writebatch_t*);
 
159
extern void leveldb_writebatch_clear(leveldb_writebatch_t*);
 
160
extern void leveldb_writebatch_put(
 
161
    leveldb_writebatch_t*,
 
162
    const char* key, size_t klen,
 
163
    const char* val, size_t vlen);
 
164
extern void leveldb_writebatch_delete(
 
165
    leveldb_writebatch_t*,
 
166
    const char* key, size_t klen);
 
167
extern void leveldb_writebatch_iterate(
 
168
    leveldb_writebatch_t*,
 
169
    void* state,
 
170
    void (*put)(void*, const char* k, size_t klen, const char* v, size_t vlen),
 
171
    void (*deleted)(void*, const char* k, size_t klen));
 
172
 
 
173
/* Options */
 
174
 
 
175
extern leveldb_options_t* leveldb_options_create();
 
176
extern void leveldb_options_destroy(leveldb_options_t*);
 
177
extern void leveldb_options_set_comparator(
 
178
    leveldb_options_t*,
 
179
    leveldb_comparator_t*);
 
180
extern void leveldb_options_set_create_if_missing(
 
181
    leveldb_options_t*, unsigned char);
 
182
extern void leveldb_options_set_error_if_exists(
 
183
    leveldb_options_t*, unsigned char);
 
184
extern void leveldb_options_set_paranoid_checks(
 
185
    leveldb_options_t*, unsigned char);
 
186
extern void leveldb_options_set_env(leveldb_options_t*, leveldb_env_t*);
 
187
extern void leveldb_options_set_info_log(leveldb_options_t*, leveldb_logger_t*);
 
188
extern void leveldb_options_set_write_buffer_size(leveldb_options_t*, size_t);
 
189
extern void leveldb_options_set_max_open_files(leveldb_options_t*, int);
 
190
extern void leveldb_options_set_cache(leveldb_options_t*, leveldb_cache_t*);
 
191
extern void leveldb_options_set_block_size(leveldb_options_t*, size_t);
 
192
extern void leveldb_options_set_block_restart_interval(leveldb_options_t*, int);
 
193
 
 
194
enum {
 
195
  leveldb_no_compression = 0,
 
196
  leveldb_snappy_compression = 1
 
197
};
 
198
extern void leveldb_options_set_compression(leveldb_options_t*, int);
 
199
 
 
200
/* Comparator */
 
201
 
 
202
extern leveldb_comparator_t* leveldb_comparator_create(
 
203
    void* state,
 
204
    void (*destructor)(void*),
 
205
    int (*compare)(
 
206
        void*,
 
207
        const char* a, size_t alen,
 
208
        const char* b, size_t blen),
 
209
    const char* (*name)(void*));
 
210
extern void leveldb_comparator_destroy(leveldb_comparator_t*);
 
211
 
 
212
/* Read options */
 
213
 
 
214
extern leveldb_readoptions_t* leveldb_readoptions_create();
 
215
extern void leveldb_readoptions_destroy(leveldb_readoptions_t*);
 
216
extern void leveldb_readoptions_set_verify_checksums(
 
217
    leveldb_readoptions_t*,
 
218
    unsigned char);
 
219
extern void leveldb_readoptions_set_fill_cache(
 
220
    leveldb_readoptions_t*, unsigned char);
 
221
extern void leveldb_readoptions_set_snapshot(
 
222
    leveldb_readoptions_t*,
 
223
    const leveldb_snapshot_t*);
 
224
 
 
225
/* Write options */
 
226
 
 
227
extern leveldb_writeoptions_t* leveldb_writeoptions_create();
 
228
extern void leveldb_writeoptions_destroy(leveldb_writeoptions_t*);
 
229
extern void leveldb_writeoptions_set_sync(
 
230
    leveldb_writeoptions_t*, unsigned char);
 
231
 
 
232
/* Cache */
 
233
 
 
234
extern leveldb_cache_t* leveldb_cache_create_lru(size_t capacity);
 
235
extern void leveldb_cache_destroy(leveldb_cache_t* cache);
 
236
 
 
237
/* Env */
 
238
 
 
239
extern leveldb_env_t* leveldb_create_default_env();
 
240
extern void leveldb_env_destroy(leveldb_env_t*);
 
241
 
 
242
#ifdef __cplusplus
 
243
}  /* end extern "C" */
 
244
#endif
 
245
 
 
246
#endif  /* STORAGE_LEVELDB_INCLUDE_C_H_ */