rocksdb-native 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/binding.c +104 -0
- package/index.js +39 -0
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/rocksdb-native.bare +0 -0
- package/prebuilds/darwin-arm64/rocksdb-native.node +0 -0
- package/prebuilds/darwin-x64/rocksdb-native.bare +0 -0
- package/prebuilds/darwin-x64/rocksdb-native.node +0 -0
- package/prebuilds/linux-arm64/rocksdb-native.bare +0 -0
- package/prebuilds/linux-arm64/rocksdb-native.node +0 -0
- package/prebuilds/linux-x64/rocksdb-native.bare +0 -0
- package/prebuilds/linux-x64/rocksdb-native.node +0 -0
- package/prebuilds/win32-x64/rocksdb-native.bare +0 -0
- package/prebuilds/win32-x64/rocksdb-native.node +0 -0
package/binding.c
CHANGED
|
@@ -45,6 +45,14 @@ typedef struct {
|
|
|
45
45
|
js_ref_t *on_close;
|
|
46
46
|
} rocksdb_native_close_t;
|
|
47
47
|
|
|
48
|
+
typedef struct {
|
|
49
|
+
rocksdb_delete_range_t handle;
|
|
50
|
+
|
|
51
|
+
js_env_t *env;
|
|
52
|
+
js_ref_t *ctx;
|
|
53
|
+
js_ref_t *on_status;
|
|
54
|
+
} rocksdb_native_delete_range_t;
|
|
55
|
+
|
|
48
56
|
typedef struct {
|
|
49
57
|
rocksdb_iterator_t handle;
|
|
50
58
|
|
|
@@ -278,6 +286,101 @@ rocksdb_native_close (js_env_t *env, js_callback_info_t *info) {
|
|
|
278
286
|
return handle;
|
|
279
287
|
}
|
|
280
288
|
|
|
289
|
+
static void
|
|
290
|
+
rocksdb_native__on_delete_range (rocksdb_delete_range_t *handle, int status) {
|
|
291
|
+
int err;
|
|
292
|
+
|
|
293
|
+
assert(status == 0);
|
|
294
|
+
|
|
295
|
+
rocksdb_native_delete_range_t *req = (rocksdb_native_delete_range_t *) handle->data;
|
|
296
|
+
|
|
297
|
+
js_env_t *env = req->env;
|
|
298
|
+
|
|
299
|
+
js_handle_scope_t *scope;
|
|
300
|
+
err = js_open_handle_scope(env, &scope);
|
|
301
|
+
assert(err == 0);
|
|
302
|
+
|
|
303
|
+
js_value_t *ctx;
|
|
304
|
+
err = js_get_reference_value(env, req->ctx, &ctx);
|
|
305
|
+
assert(err == 0);
|
|
306
|
+
|
|
307
|
+
js_value_t *cb;
|
|
308
|
+
err = js_get_reference_value(env, req->on_status, &cb);
|
|
309
|
+
assert(err == 0);
|
|
310
|
+
|
|
311
|
+
js_value_t *error;
|
|
312
|
+
|
|
313
|
+
if (req->handle.error) {
|
|
314
|
+
err = js_create_string_utf8(env, (utf8_t *) req->handle.error, -1, &error);
|
|
315
|
+
assert(err == 0);
|
|
316
|
+
} else {
|
|
317
|
+
err = js_get_null(env, &error);
|
|
318
|
+
assert(err == 0);
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
js_call_function(env, ctx, cb, 1, (js_value_t *[]){error}, NULL);
|
|
322
|
+
|
|
323
|
+
err = js_close_handle_scope(env, scope);
|
|
324
|
+
assert(err == 0);
|
|
325
|
+
|
|
326
|
+
err = js_delete_reference(env, req->on_status);
|
|
327
|
+
assert(err == 0);
|
|
328
|
+
|
|
329
|
+
err = js_delete_reference(env, req->ctx);
|
|
330
|
+
assert(err == 0);
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
static js_value_t *
|
|
334
|
+
rocksdb_native_delete_range (js_env_t *env, js_callback_info_t *info) {
|
|
335
|
+
int err;
|
|
336
|
+
|
|
337
|
+
size_t argc = 7;
|
|
338
|
+
js_value_t *argv[7];
|
|
339
|
+
|
|
340
|
+
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
341
|
+
assert(err == 0);
|
|
342
|
+
|
|
343
|
+
assert(argc == 7);
|
|
344
|
+
|
|
345
|
+
rocksdb_native_t *db;
|
|
346
|
+
err = js_get_arraybuffer_info(env, argv[0], (void **) &db, NULL);
|
|
347
|
+
assert(err == 0);
|
|
348
|
+
|
|
349
|
+
js_value_t *handle;
|
|
350
|
+
|
|
351
|
+
rocksdb_native_delete_range_t *req;
|
|
352
|
+
err = js_create_arraybuffer(env, sizeof(rocksdb_native_delete_range_t), (void **) &req, &handle);
|
|
353
|
+
assert(err == 0);
|
|
354
|
+
|
|
355
|
+
req->env = env;
|
|
356
|
+
req->handle.data = (void *) req;
|
|
357
|
+
|
|
358
|
+
rocksdb_range_t range;
|
|
359
|
+
|
|
360
|
+
err = js_get_typedarray_info(env, argv[1], NULL, (void **) &range.gt.data, &range.gt.len, NULL, NULL);
|
|
361
|
+
assert(err == 0);
|
|
362
|
+
|
|
363
|
+
err = js_get_typedarray_info(env, argv[2], NULL, (void **) &range.gte.data, &range.gte.len, NULL, NULL);
|
|
364
|
+
assert(err == 0);
|
|
365
|
+
|
|
366
|
+
err = js_get_typedarray_info(env, argv[3], NULL, (void **) &range.lt.data, &range.lt.len, NULL, NULL);
|
|
367
|
+
assert(err == 0);
|
|
368
|
+
|
|
369
|
+
err = js_get_typedarray_info(env, argv[4], NULL, (void **) &range.lte.data, &range.lte.len, NULL, NULL);
|
|
370
|
+
assert(err == 0);
|
|
371
|
+
|
|
372
|
+
err = js_create_reference(env, argv[5], 1, &req->ctx);
|
|
373
|
+
assert(err == 0);
|
|
374
|
+
|
|
375
|
+
err = js_create_reference(env, argv[6], 1, &req->on_status);
|
|
376
|
+
assert(err == 0);
|
|
377
|
+
|
|
378
|
+
err = rocksdb_delete_range(&db->handle, &req->handle, range, rocksdb_native__on_delete_range);
|
|
379
|
+
assert(err == 0);
|
|
380
|
+
|
|
381
|
+
return handle;
|
|
382
|
+
}
|
|
383
|
+
|
|
281
384
|
static js_value_t *
|
|
282
385
|
rocksdb_native_iterator_init (js_env_t *env, js_callback_info_t *info) {
|
|
283
386
|
int err;
|
|
@@ -866,6 +969,7 @@ rocksdb_native_exports (js_env_t *env, js_value_t *exports) {
|
|
|
866
969
|
V("init", rocksdb_native_init)
|
|
867
970
|
V("open", rocksdb_native_open)
|
|
868
971
|
V("close", rocksdb_native_close)
|
|
972
|
+
V("deleteRange", rocksdb_native_delete_range)
|
|
869
973
|
|
|
870
974
|
V("iteratorInit", rocksdb_native_iterator_init)
|
|
871
975
|
V("iteratorBuffer", rocksdb_native_iterator_buffer)
|
package/index.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
/* global Bare */
|
|
2
2
|
const ReadyResource = require('ready-resource')
|
|
3
|
+
const b4a = require('b4a')
|
|
3
4
|
const binding = require('./binding')
|
|
4
5
|
const Batch = require('./lib/batch')
|
|
5
6
|
const Iterator = require('./lib/iterator')
|
|
6
7
|
|
|
8
|
+
const empty = b4a.alloc(0)
|
|
9
|
+
|
|
7
10
|
const RocksDB = module.exports = class RocksDB extends ReadyResource {
|
|
8
11
|
constructor (path, {
|
|
9
12
|
// default options, https://github.com/facebook/rocksdb/wiki/Setup-Options-and-Basic-Tuning
|
|
@@ -101,6 +104,42 @@ const RocksDB = module.exports = class RocksDB extends ReadyResource {
|
|
|
101
104
|
}
|
|
102
105
|
}
|
|
103
106
|
|
|
107
|
+
async deleteRange (start, end, opts = {}) {
|
|
108
|
+
if (typeof start === 'string') start = b4a.from(start)
|
|
109
|
+
if (typeof end === 'string') end = b4a.from(end)
|
|
110
|
+
|
|
111
|
+
if (start && !b4a.isBuffer(start)) {
|
|
112
|
+
opts = start
|
|
113
|
+
start = empty
|
|
114
|
+
} else if (end && !b4a.isBuffer(end)) {
|
|
115
|
+
opts = end
|
|
116
|
+
end = empty
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
const {
|
|
120
|
+
gt = empty,
|
|
121
|
+
gte = start,
|
|
122
|
+
lt = end,
|
|
123
|
+
lte = empty
|
|
124
|
+
} = opts
|
|
125
|
+
|
|
126
|
+
const req = { resolve: null, reject: null, handle: null }
|
|
127
|
+
|
|
128
|
+
const promise = new Promise((resolve, reject) => {
|
|
129
|
+
req.resolve = resolve
|
|
130
|
+
req.reject = reject
|
|
131
|
+
})
|
|
132
|
+
|
|
133
|
+
req.handle = binding.deleteRange(this._handle, gt, gte, lt, lte, req, onstatus)
|
|
134
|
+
|
|
135
|
+
return promise
|
|
136
|
+
|
|
137
|
+
function onstatus (err) {
|
|
138
|
+
if (err) req.reject(new Error(err))
|
|
139
|
+
else req.resolve()
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
104
143
|
batch (opts) {
|
|
105
144
|
return new Batch(this, opts)
|
|
106
145
|
}
|
package/package.json
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|