rocksdb-native 3.11.2 → 3.11.3
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/CMakeLists.txt +1 -1
- package/binding.cc +353 -388
- package/package.json +1 -1
- package/prebuilds/android-arm/rocksdb-native.bare +0 -0
- package/prebuilds/android-arm64/rocksdb-native.bare +0 -0
- package/prebuilds/android-ia32/rocksdb-native.bare +0 -0
- package/prebuilds/android-x64/rocksdb-native.bare +0 -0
- 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/ios-arm64/rocksdb-native.bare +0 -0
- package/prebuilds/ios-arm64-simulator/rocksdb-native.bare +0 -0
- package/prebuilds/ios-x64-simulator/rocksdb-native.bare +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-arm64/rocksdb-native.bare +0 -0
- package/prebuilds/win32-arm64/rocksdb-native.node +0 -0
- package/prebuilds/win32-x64/rocksdb-native.bare +0 -0
- package/prebuilds/win32-x64/rocksdb-native.node +0 -0
package/CMakeLists.txt
CHANGED
|
@@ -9,7 +9,7 @@ project(rocksdb_native C CXX)
|
|
|
9
9
|
|
|
10
10
|
bare_target(target)
|
|
11
11
|
|
|
12
|
-
fetch_package("github:holepunchto/librocksdb#
|
|
12
|
+
fetch_package("github:holepunchto/librocksdb#d5b0f65")
|
|
13
13
|
fetch_package("github:holepunchto/libjstl#098664c")
|
|
14
14
|
|
|
15
15
|
add_bare_module(rocksdb_native_bare)
|
package/binding.cc
CHANGED
|
@@ -73,6 +73,7 @@ struct rocksdb_native_close_t {
|
|
|
73
73
|
|
|
74
74
|
js_env_t *env;
|
|
75
75
|
js_persistent_t<js_receiver_t> ctx;
|
|
76
|
+
js_persistent_t<js_arraybuffer_t> self;
|
|
76
77
|
js_persistent_t<rocksdb_native_on_close_t> on_close;
|
|
77
78
|
};
|
|
78
79
|
|
|
@@ -104,7 +105,7 @@ struct rocksdb_native_iterator_t {
|
|
|
104
105
|
js_persistent_t<rocksdb_native_on_iterator_close_t> on_close;
|
|
105
106
|
js_persistent_t<rocksdb_native_on_iterator_read_t> on_read;
|
|
106
107
|
|
|
107
|
-
bool
|
|
108
|
+
bool closing;
|
|
108
109
|
bool exiting;
|
|
109
110
|
|
|
110
111
|
js_deferred_teardown_t *teardown;
|
|
@@ -193,50 +194,43 @@ rocksdb_native__on_open(rocksdb_open_t *handle, int status) {
|
|
|
193
194
|
auto env = req->env;
|
|
194
195
|
|
|
195
196
|
auto descriptors = handle->column_families;
|
|
196
|
-
|
|
197
197
|
auto handles = handle->handles;
|
|
198
198
|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
} else {
|
|
203
|
-
js_handle_scope_t *scope;
|
|
204
|
-
err = js_open_handle_scope(env, &scope);
|
|
205
|
-
assert(err == 0);
|
|
206
|
-
|
|
207
|
-
js_receiver_t ctx;
|
|
208
|
-
err = js_get_reference_value(env, req->ctx, ctx);
|
|
209
|
-
assert(err == 0);
|
|
210
|
-
|
|
211
|
-
rocksdb_native_on_open_t cb;
|
|
212
|
-
err = js_get_reference_value(env, req->on_open, cb);
|
|
213
|
-
assert(err == 0);
|
|
199
|
+
js_handle_scope_t *scope;
|
|
200
|
+
err = js_open_handle_scope(env, &scope);
|
|
201
|
+
assert(err == 0);
|
|
214
202
|
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
203
|
+
js_receiver_t ctx;
|
|
204
|
+
err = js_get_reference_value(env, req->ctx, ctx);
|
|
205
|
+
assert(err == 0);
|
|
218
206
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
207
|
+
rocksdb_native_on_open_t cb;
|
|
208
|
+
err = js_get_reference_value(env, req->on_open, cb);
|
|
209
|
+
assert(err == 0);
|
|
222
210
|
|
|
223
|
-
|
|
211
|
+
js_array_t column_families;
|
|
212
|
+
err = js_get_reference_value(env, req->column_families, column_families);
|
|
213
|
+
assert(err == 0);
|
|
224
214
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
}
|
|
215
|
+
req->on_open.reset();
|
|
216
|
+
req->column_families.reset();
|
|
217
|
+
req->ctx.reset();
|
|
229
218
|
|
|
230
|
-
|
|
219
|
+
std::optional<js_string_t> error;
|
|
231
220
|
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
221
|
+
if (req->handle.error) {
|
|
222
|
+
err = js_create_string(env, req->handle.error, error.emplace());
|
|
223
|
+
assert(err == 0);
|
|
224
|
+
} else {
|
|
225
|
+
std::vector<js_arraybuffer_t> elements;
|
|
226
|
+
err = js_get_array_elements(env, column_families, elements);
|
|
227
|
+
assert(err == 0);
|
|
236
228
|
|
|
237
|
-
|
|
229
|
+
const auto len = elements.size();
|
|
238
230
|
|
|
239
|
-
|
|
231
|
+
for (uint32_t i = 0; i < len; i++) {
|
|
232
|
+
if (db->exiting) rocksdb_column_family_destroy(&db->handle, handles[i]);
|
|
233
|
+
else {
|
|
240
234
|
js_arraybuffer_t handle = elements[i];
|
|
241
235
|
|
|
242
236
|
rocksdb_native_column_family_t *column_family;
|
|
@@ -251,15 +245,18 @@ rocksdb_native__on_open(rocksdb_open_t *handle, int status) {
|
|
|
251
245
|
db->column_families.insert(column_family);
|
|
252
246
|
}
|
|
253
247
|
}
|
|
248
|
+
}
|
|
254
249
|
|
|
255
|
-
|
|
250
|
+
if (!db->exiting) {
|
|
251
|
+
err = js_call_function_with_checkpoint(env, cb, ctx, error);
|
|
252
|
+
(void) err;
|
|
253
|
+
}
|
|
256
254
|
|
|
257
|
-
|
|
258
|
-
|
|
255
|
+
err = js_close_handle_scope(env, scope);
|
|
256
|
+
assert(err == 0);
|
|
259
257
|
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
}
|
|
258
|
+
delete[] descriptors;
|
|
259
|
+
delete[] handles;
|
|
263
260
|
}
|
|
264
261
|
|
|
265
262
|
static void
|
|
@@ -277,14 +274,13 @@ rocksdb_native__on_idle(rocksdb_t *handle) {
|
|
|
277
274
|
column_family->ctx.reset();
|
|
278
275
|
}
|
|
279
276
|
|
|
280
|
-
db->column_families.~set();
|
|
281
|
-
|
|
282
277
|
for (auto &snapshot : db->snapshots) {
|
|
283
278
|
rocksdb_snapshot_destroy(&snapshot->handle);
|
|
284
279
|
|
|
285
280
|
snapshot->ctx.reset();
|
|
286
281
|
}
|
|
287
282
|
|
|
283
|
+
db->column_families.~set();
|
|
288
284
|
db->snapshots.~set();
|
|
289
285
|
}
|
|
290
286
|
|
|
@@ -302,62 +298,83 @@ rocksdb_native__on_close(rocksdb_close_t *handle, int status) {
|
|
|
302
298
|
|
|
303
299
|
auto teardown = db->teardown;
|
|
304
300
|
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
req->ctx.reset();
|
|
309
|
-
} else {
|
|
310
|
-
free(req);
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
db->ctx.reset();
|
|
314
|
-
} else {
|
|
315
|
-
js_handle_scope_t *scope;
|
|
316
|
-
err = js_open_handle_scope(env, &scope);
|
|
317
|
-
assert(err == 0);
|
|
318
|
-
|
|
319
|
-
js_receiver_t ctx;
|
|
320
|
-
err = js_get_reference_value(env, req->ctx, ctx);
|
|
321
|
-
assert(err == 0);
|
|
301
|
+
js_handle_scope_t *scope;
|
|
302
|
+
err = js_open_handle_scope(env, &scope);
|
|
303
|
+
assert(err == 0);
|
|
322
304
|
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
305
|
+
js_receiver_t ctx;
|
|
306
|
+
err = js_get_reference_value(env, req->ctx, ctx);
|
|
307
|
+
assert(err == 0);
|
|
326
308
|
|
|
327
|
-
|
|
328
|
-
|
|
309
|
+
rocksdb_native_on_close_t cb;
|
|
310
|
+
err = js_get_reference_value(env, req->on_close, cb);
|
|
311
|
+
assert(err == 0);
|
|
329
312
|
|
|
330
|
-
|
|
313
|
+
req->on_close.reset();
|
|
314
|
+
req->self.reset();
|
|
315
|
+
req->ctx.reset();
|
|
331
316
|
|
|
332
|
-
|
|
317
|
+
db->ctx.reset();
|
|
333
318
|
|
|
334
|
-
|
|
335
|
-
|
|
319
|
+
if (!db->exiting) {
|
|
320
|
+
err = js_call_function_with_checkpoint(env, cb, ctx);
|
|
321
|
+
(void) err;
|
|
336
322
|
}
|
|
337
323
|
|
|
324
|
+
err = js_close_handle_scope(env, scope);
|
|
325
|
+
assert(err == 0);
|
|
326
|
+
|
|
338
327
|
err = js_finish_deferred_teardown_callback(teardown);
|
|
339
328
|
assert(err == 0);
|
|
340
329
|
}
|
|
341
330
|
|
|
342
331
|
static void
|
|
343
|
-
rocksdb_native__on_teardown(js_deferred_teardown_t *
|
|
332
|
+
rocksdb_native__on_teardown(js_deferred_teardown_t *teardown, void *data) {
|
|
344
333
|
int err;
|
|
345
334
|
|
|
346
335
|
auto db = reinterpret_cast<rocksdb_native_t *>(data);
|
|
347
336
|
|
|
348
|
-
auto env = db->env;
|
|
349
|
-
|
|
350
337
|
db->exiting = true;
|
|
351
338
|
|
|
352
339
|
if (db->closing) return;
|
|
353
340
|
|
|
354
|
-
auto
|
|
341
|
+
auto env = db->env;
|
|
342
|
+
|
|
343
|
+
js_handle_scope_t *scope;
|
|
344
|
+
err = js_open_handle_scope(env, &scope);
|
|
345
|
+
assert(err == 0);
|
|
346
|
+
|
|
347
|
+
js_arraybuffer_t handle;
|
|
348
|
+
|
|
349
|
+
rocksdb_native_close_t *req;
|
|
350
|
+
err = js_create_arraybuffer(env, req, handle);
|
|
351
|
+
assert(err == 0);
|
|
355
352
|
|
|
356
353
|
req->env = env;
|
|
357
354
|
req->handle.data = req;
|
|
358
355
|
|
|
359
356
|
err = rocksdb_close(&db->handle, &req->handle, rocksdb_native__on_idle, rocksdb_native__on_close);
|
|
360
357
|
assert(err == 0);
|
|
358
|
+
|
|
359
|
+
js_receiver_t ctx;
|
|
360
|
+
err = js_get_null(env, static_cast<js_value_t **>(ctx));
|
|
361
|
+
assert(err == 0);
|
|
362
|
+
|
|
363
|
+
rocksdb_native_on_close_t on_close;
|
|
364
|
+
err = js_get_null(env, static_cast<js_value_t **>(on_close));
|
|
365
|
+
assert(err == 0);
|
|
366
|
+
|
|
367
|
+
err = js_create_reference(env, ctx, req->ctx);
|
|
368
|
+
assert(err == 0);
|
|
369
|
+
|
|
370
|
+
err = js_create_reference(env, handle, req->self);
|
|
371
|
+
assert(err == 0);
|
|
372
|
+
|
|
373
|
+
err = js_create_reference(env, on_close, req->on_close);
|
|
374
|
+
assert(err == 0);
|
|
375
|
+
|
|
376
|
+
err = js_close_handle_scope(env, scope);
|
|
377
|
+
assert(err == 0);
|
|
361
378
|
}
|
|
362
379
|
|
|
363
380
|
static js_arraybuffer_t
|
|
@@ -377,10 +394,6 @@ rocksdb_native_init(
|
|
|
377
394
|
) {
|
|
378
395
|
int err;
|
|
379
396
|
|
|
380
|
-
uv_loop_t *loop;
|
|
381
|
-
err = js_get_env_loop(env, &loop);
|
|
382
|
-
assert(err == 0);
|
|
383
|
-
|
|
384
397
|
js_arraybuffer_t handle;
|
|
385
398
|
|
|
386
399
|
rocksdb_native_t *db;
|
|
@@ -410,15 +423,6 @@ rocksdb_native_init(
|
|
|
410
423
|
-1,
|
|
411
424
|
};
|
|
412
425
|
|
|
413
|
-
err = rocksdb_init(loop, &db->handle);
|
|
414
|
-
|
|
415
|
-
if (err < 0) {
|
|
416
|
-
err = js_throw_error(env, uv_err_name(err), uv_strerror(err));
|
|
417
|
-
assert(err == 0);
|
|
418
|
-
|
|
419
|
-
throw js_pending_exception;
|
|
420
|
-
}
|
|
421
|
-
|
|
422
426
|
return handle;
|
|
423
427
|
}
|
|
424
428
|
|
|
@@ -457,6 +461,10 @@ rocksdb_native_open(
|
|
|
457
461
|
|
|
458
462
|
auto handles = new rocksdb_column_family_t *[len];
|
|
459
463
|
|
|
464
|
+
uv_loop_t *loop;
|
|
465
|
+
err = js_get_env_loop(env, &loop);
|
|
466
|
+
assert(err == 0);
|
|
467
|
+
|
|
460
468
|
js_arraybuffer_t handle;
|
|
461
469
|
|
|
462
470
|
rocksdb_native_open_t *req;
|
|
@@ -468,7 +476,7 @@ rocksdb_native_open(
|
|
|
468
476
|
|
|
469
477
|
db->options.lock = lock;
|
|
470
478
|
|
|
471
|
-
err = rocksdb_open(&db->handle, &req->handle, path, &db->options, column_families, handles, len, nullptr, rocksdb_native__on_open);
|
|
479
|
+
err = rocksdb_open(loop, &db->handle, &req->handle, path, &db->options, column_families, handles, len, nullptr, rocksdb_native__on_open);
|
|
472
480
|
|
|
473
481
|
if (err < 0) {
|
|
474
482
|
err = js_throw_error(env, uv_err_name(err), uv_strerror(err));
|
|
@@ -531,6 +539,9 @@ rocksdb_native_close(
|
|
|
531
539
|
err = js_create_reference(env, ctx, req->ctx);
|
|
532
540
|
assert(err == 0);
|
|
533
541
|
|
|
542
|
+
err = js_create_reference(env, handle, req->self);
|
|
543
|
+
assert(err == 0);
|
|
544
|
+
|
|
534
545
|
err = js_create_reference(env, on_close, req->on_close);
|
|
535
546
|
assert(err == 0);
|
|
536
547
|
|
|
@@ -551,36 +562,35 @@ rocksdb_native__on_suspend(rocksdb_suspend_t *handle, int status) {
|
|
|
551
562
|
|
|
552
563
|
auto env = req->env;
|
|
553
564
|
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
req->on_suspend.reset();
|
|
558
|
-
req->ctx.reset();
|
|
559
|
-
} else {
|
|
560
|
-
js_handle_scope_t *scope;
|
|
561
|
-
err = js_open_handle_scope(env, &scope);
|
|
562
|
-
assert(err == 0);
|
|
565
|
+
js_handle_scope_t *scope;
|
|
566
|
+
err = js_open_handle_scope(env, &scope);
|
|
567
|
+
assert(err == 0);
|
|
563
568
|
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
569
|
+
js_receiver_t ctx;
|
|
570
|
+
err = js_get_reference_value(env, req->ctx, ctx);
|
|
571
|
+
assert(err == 0);
|
|
567
572
|
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
573
|
+
rocksdb_native_on_suspend_t cb;
|
|
574
|
+
err = js_get_reference_value(env, req->on_suspend, cb);
|
|
575
|
+
assert(err == 0);
|
|
571
576
|
|
|
572
|
-
|
|
577
|
+
req->on_suspend.reset();
|
|
578
|
+
req->ctx.reset();
|
|
573
579
|
|
|
574
|
-
|
|
575
|
-
err = js_create_string(env, req->handle.error, error.emplace());
|
|
576
|
-
assert(err == 0);
|
|
577
|
-
}
|
|
578
|
-
|
|
579
|
-
js_call_function_with_checkpoint(env, cb, ctx, error);
|
|
580
|
+
std::optional<js_string_t> error;
|
|
580
581
|
|
|
581
|
-
|
|
582
|
+
if (req->handle.error) {
|
|
583
|
+
err = js_create_string(env, req->handle.error, error.emplace());
|
|
582
584
|
assert(err == 0);
|
|
583
585
|
}
|
|
586
|
+
|
|
587
|
+
if (!db->exiting) {
|
|
588
|
+
err = js_call_function_with_checkpoint(env, cb, ctx, error);
|
|
589
|
+
(void) err;
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
err = js_close_handle_scope(env, scope);
|
|
593
|
+
assert(err == 0);
|
|
584
594
|
}
|
|
585
595
|
|
|
586
596
|
static js_arraybuffer_t
|
|
@@ -631,39 +641,35 @@ rocksdb_native__on_resume(rocksdb_resume_t *handle, int status) {
|
|
|
631
641
|
|
|
632
642
|
auto env = req->env;
|
|
633
643
|
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
req->on_resume.reset();
|
|
638
|
-
req->ctx.reset();
|
|
639
|
-
} else {
|
|
640
|
-
js_handle_scope_t *scope;
|
|
641
|
-
err = js_open_handle_scope(env, &scope);
|
|
642
|
-
assert(err == 0);
|
|
644
|
+
js_handle_scope_t *scope;
|
|
645
|
+
err = js_open_handle_scope(env, &scope);
|
|
646
|
+
assert(err == 0);
|
|
643
647
|
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
648
|
+
js_receiver_t ctx;
|
|
649
|
+
err = js_get_reference_value(env, req->ctx, ctx);
|
|
650
|
+
assert(err == 0);
|
|
647
651
|
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
652
|
+
rocksdb_native_on_resume_t cb;
|
|
653
|
+
err = js_get_reference_value(env, req->on_resume, cb);
|
|
654
|
+
assert(err == 0);
|
|
651
655
|
|
|
652
|
-
|
|
653
|
-
|
|
656
|
+
req->on_resume.reset();
|
|
657
|
+
req->ctx.reset();
|
|
654
658
|
|
|
655
|
-
|
|
659
|
+
std::optional<js_string_t> error;
|
|
656
660
|
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
assert(err == 0);
|
|
660
|
-
}
|
|
661
|
-
|
|
662
|
-
js_call_function_with_checkpoint(env, cb, ctx, error);
|
|
663
|
-
|
|
664
|
-
err = js_close_handle_scope(env, scope);
|
|
661
|
+
if (req->handle.error) {
|
|
662
|
+
err = js_create_string(env, req->handle.error, error.emplace());
|
|
665
663
|
assert(err == 0);
|
|
666
664
|
}
|
|
665
|
+
|
|
666
|
+
if (!db->exiting) {
|
|
667
|
+
err = js_call_function_with_checkpoint(env, cb, ctx, error);
|
|
668
|
+
(void) err;
|
|
669
|
+
}
|
|
670
|
+
|
|
671
|
+
err = js_close_handle_scope(env, scope);
|
|
672
|
+
assert(err == 0);
|
|
667
673
|
}
|
|
668
674
|
|
|
669
675
|
static js_arraybuffer_t
|
|
@@ -816,7 +822,7 @@ rocksdb_native_iterator_init(js_env_t *env) {
|
|
|
816
822
|
assert(err == 0);
|
|
817
823
|
|
|
818
824
|
req->env = env;
|
|
819
|
-
req->
|
|
825
|
+
req->closing = false;
|
|
820
826
|
req->exiting = false;
|
|
821
827
|
req->handle.data = req;
|
|
822
828
|
|
|
@@ -856,48 +862,42 @@ rocksdb_native__on_iterator_close(rocksdb_iterator_t *handle, int status) {
|
|
|
856
862
|
|
|
857
863
|
auto req = reinterpret_cast<rocksdb_native_iterator_t *>(handle->data);
|
|
858
864
|
|
|
859
|
-
req->active = false;
|
|
860
|
-
|
|
861
865
|
auto env = req->env;
|
|
862
866
|
|
|
863
867
|
auto teardown = req->teardown;
|
|
864
868
|
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
req->on_read.reset();
|
|
869
|
-
req->ctx.reset();
|
|
870
|
-
} else {
|
|
871
|
-
js_handle_scope_t *scope;
|
|
872
|
-
err = js_open_handle_scope(env, &scope);
|
|
873
|
-
assert(err == 0);
|
|
874
|
-
|
|
875
|
-
js_receiver_t ctx;
|
|
876
|
-
err = js_get_reference_value(env, req->ctx, ctx);
|
|
877
|
-
assert(err == 0);
|
|
878
|
-
|
|
879
|
-
rocksdb_native_on_iterator_close_t cb;
|
|
880
|
-
err = js_get_reference_value(env, req->on_close, cb);
|
|
881
|
-
assert(err == 0);
|
|
869
|
+
js_handle_scope_t *scope;
|
|
870
|
+
err = js_open_handle_scope(env, &scope);
|
|
871
|
+
assert(err == 0);
|
|
882
872
|
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
req->ctx.reset();
|
|
873
|
+
js_receiver_t ctx;
|
|
874
|
+
err = js_get_reference_value(env, req->ctx, ctx);
|
|
875
|
+
assert(err == 0);
|
|
887
876
|
|
|
888
|
-
|
|
877
|
+
rocksdb_native_on_iterator_close_t cb;
|
|
878
|
+
err = js_get_reference_value(env, req->on_close, cb);
|
|
879
|
+
assert(err == 0);
|
|
889
880
|
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
881
|
+
req->on_open.reset();
|
|
882
|
+
req->on_close.reset();
|
|
883
|
+
req->on_read.reset();
|
|
884
|
+
req->ctx.reset();
|
|
894
885
|
|
|
895
|
-
|
|
886
|
+
std::optional<js_string_t> error;
|
|
896
887
|
|
|
897
|
-
|
|
888
|
+
if (req->handle.error) {
|
|
889
|
+
err = js_create_string(env, req->handle.error, error.emplace());
|
|
898
890
|
assert(err == 0);
|
|
899
891
|
}
|
|
900
892
|
|
|
893
|
+
if (!req->exiting) {
|
|
894
|
+
err = js_call_function_with_checkpoint(env, cb, ctx, error);
|
|
895
|
+
(void) err;
|
|
896
|
+
}
|
|
897
|
+
|
|
898
|
+
err = js_close_handle_scope(env, scope);
|
|
899
|
+
assert(err == 0);
|
|
900
|
+
|
|
901
901
|
err = js_finish_deferred_teardown_callback(teardown);
|
|
902
902
|
assert(err == 0);
|
|
903
903
|
}
|
|
@@ -910,49 +910,45 @@ rocksdb_native__on_iterator_open(rocksdb_iterator_t *handle, int status) {
|
|
|
910
910
|
|
|
911
911
|
auto req = reinterpret_cast<rocksdb_native_iterator_t *>(handle->data);
|
|
912
912
|
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
if (req->exiting) {
|
|
916
|
-
err = rocksdb_iterator_close(&req->handle, rocksdb_native__on_iterator_close);
|
|
917
|
-
assert(err == 0);
|
|
918
|
-
} else {
|
|
919
|
-
auto env = req->env;
|
|
920
|
-
|
|
921
|
-
js_handle_scope_t *scope;
|
|
922
|
-
err = js_open_handle_scope(env, &scope);
|
|
923
|
-
assert(err == 0);
|
|
924
|
-
|
|
925
|
-
js_receiver_t ctx;
|
|
926
|
-
err = js_get_reference_value(env, req->ctx, ctx);
|
|
927
|
-
assert(err == 0);
|
|
913
|
+
auto env = req->env;
|
|
928
914
|
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
915
|
+
js_handle_scope_t *scope;
|
|
916
|
+
err = js_open_handle_scope(env, &scope);
|
|
917
|
+
assert(err == 0);
|
|
932
918
|
|
|
933
|
-
|
|
919
|
+
js_receiver_t ctx;
|
|
920
|
+
err = js_get_reference_value(env, req->ctx, ctx);
|
|
921
|
+
assert(err == 0);
|
|
934
922
|
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
}
|
|
923
|
+
rocksdb_native_on_iterator_open_t cb;
|
|
924
|
+
err = js_get_reference_value(env, req->on_open, cb);
|
|
925
|
+
assert(err == 0);
|
|
939
926
|
|
|
940
|
-
|
|
927
|
+
std::optional<js_string_t> error;
|
|
941
928
|
|
|
942
|
-
|
|
929
|
+
if (req->handle.error) {
|
|
930
|
+
err = js_create_string(env, req->handle.error, error.emplace());
|
|
943
931
|
assert(err == 0);
|
|
944
932
|
}
|
|
933
|
+
|
|
934
|
+
if (!req->exiting) {
|
|
935
|
+
err = js_call_function_with_checkpoint(env, cb, ctx, error);
|
|
936
|
+
(void) err;
|
|
937
|
+
}
|
|
938
|
+
|
|
939
|
+
err = js_close_handle_scope(env, scope);
|
|
940
|
+
assert(err == 0);
|
|
945
941
|
}
|
|
946
942
|
|
|
947
943
|
static void
|
|
948
|
-
rocksdb_native__on_iterator_teardown(js_deferred_teardown_t *
|
|
944
|
+
rocksdb_native__on_iterator_teardown(js_deferred_teardown_t *teardown, void *data) {
|
|
949
945
|
int err;
|
|
950
946
|
|
|
951
947
|
auto req = reinterpret_cast<rocksdb_native_iterator_t *>(data);
|
|
952
948
|
|
|
953
949
|
req->exiting = true;
|
|
954
950
|
|
|
955
|
-
if (req->
|
|
951
|
+
if (req->closing) return;
|
|
956
952
|
|
|
957
953
|
err = rocksdb_iterator_close(&req->handle, rocksdb_native__on_iterator_close);
|
|
958
954
|
assert(err == 0);
|
|
@@ -1009,8 +1005,6 @@ rocksdb_native_iterator_open(
|
|
|
1009
1005
|
throw js_pending_exception;
|
|
1010
1006
|
}
|
|
1011
1007
|
|
|
1012
|
-
req->active = true;
|
|
1013
|
-
|
|
1014
1008
|
err = js_create_reference(env, ctx, req->ctx);
|
|
1015
1009
|
assert(err == 0);
|
|
1016
1010
|
|
|
@@ -1040,7 +1034,7 @@ rocksdb_native_iterator_close(js_env_t *env, js_arraybuffer_span_of_t<rocksdb_na
|
|
|
1040
1034
|
throw js_pending_exception;
|
|
1041
1035
|
}
|
|
1042
1036
|
|
|
1043
|
-
req->
|
|
1037
|
+
req->closing = true;
|
|
1044
1038
|
}
|
|
1045
1039
|
|
|
1046
1040
|
static void
|
|
@@ -1051,76 +1045,66 @@ rocksdb_native__on_iterator_read(rocksdb_iterator_t *handle, int status) {
|
|
|
1051
1045
|
|
|
1052
1046
|
auto req = reinterpret_cast<rocksdb_native_iterator_t *>(handle->data);
|
|
1053
1047
|
|
|
1054
|
-
req->active = false;
|
|
1055
|
-
|
|
1056
1048
|
auto db = reinterpret_cast<rocksdb_native_t *>(req->handle.req.db);
|
|
1057
1049
|
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
if (db->exiting) {
|
|
1061
|
-
if (status == 0 && req->handle.error == nullptr) {
|
|
1062
|
-
for (size_t i = 0; i < len; i++) {
|
|
1063
|
-
js_value_t *result;
|
|
1064
|
-
|
|
1065
|
-
rocksdb_slice_destroy(&req->keys[i]);
|
|
1050
|
+
auto len = req->handle.len;
|
|
1066
1051
|
|
|
1067
|
-
|
|
1068
|
-
}
|
|
1069
|
-
}
|
|
1052
|
+
auto env = req->env;
|
|
1070
1053
|
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
auto env = req->env;
|
|
1054
|
+
js_handle_scope_t *scope;
|
|
1055
|
+
err = js_open_handle_scope(env, &scope);
|
|
1056
|
+
assert(err == 0);
|
|
1075
1057
|
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1058
|
+
js_receiver_t ctx;
|
|
1059
|
+
err = js_get_reference_value(env, req->ctx, ctx);
|
|
1060
|
+
assert(err == 0);
|
|
1079
1061
|
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1062
|
+
rocksdb_native_on_iterator_read_t cb;
|
|
1063
|
+
err = js_get_reference_value(env, req->on_read, cb);
|
|
1064
|
+
assert(err == 0);
|
|
1083
1065
|
|
|
1084
|
-
|
|
1085
|
-
err = js_get_reference_value(env, req->on_read, cb);
|
|
1086
|
-
assert(err == 0);
|
|
1066
|
+
std::optional<js_string_t> error;
|
|
1087
1067
|
|
|
1088
|
-
|
|
1068
|
+
std::vector<js_arraybuffer_t> keys;
|
|
1069
|
+
keys.reserve(len);
|
|
1089
1070
|
|
|
1090
|
-
|
|
1091
|
-
|
|
1071
|
+
std::vector<js_arraybuffer_t> values;
|
|
1072
|
+
values.reserve(len);
|
|
1092
1073
|
|
|
1093
|
-
|
|
1094
|
-
|
|
1074
|
+
if (req->handle.error) {
|
|
1075
|
+
err = js_create_string(env, req->handle.error, error.emplace());
|
|
1076
|
+
assert(err == 0);
|
|
1077
|
+
} else {
|
|
1078
|
+
for (size_t i = 0; i < len; i++) {
|
|
1079
|
+
rocksdb_slice_t *key = &req->keys[i];
|
|
1080
|
+
rocksdb_slice_t *value = &req->values[i];
|
|
1095
1081
|
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
for (size_t i = 0; i < len; i++) {
|
|
1082
|
+
if (req->exiting) {
|
|
1083
|
+
rocksdb_slice_destroy(key);
|
|
1084
|
+
rocksdb_slice_destroy(value);
|
|
1085
|
+
} else {
|
|
1101
1086
|
js_arraybuffer_t result;
|
|
1102
1087
|
|
|
1103
|
-
rocksdb_slice_t *key = &req->keys[i];
|
|
1104
|
-
|
|
1105
1088
|
err = rocksdb_native__try_create_external_arraybuffer(env, const_cast<char *>(key->data), key->len, result);
|
|
1106
1089
|
assert(err == 0);
|
|
1107
1090
|
|
|
1108
1091
|
keys.push_back(result);
|
|
1109
1092
|
|
|
1110
|
-
rocksdb_slice_t *value = &req->values[i];
|
|
1111
|
-
|
|
1112
1093
|
err = rocksdb_native__try_create_external_arraybuffer(env, const_cast<char *>(value->data), value->len, result);
|
|
1113
1094
|
assert(err == 0);
|
|
1114
1095
|
|
|
1115
1096
|
values.push_back(result);
|
|
1116
1097
|
}
|
|
1117
1098
|
}
|
|
1099
|
+
}
|
|
1118
1100
|
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
assert(err == 0);
|
|
1101
|
+
if (!req->exiting) {
|
|
1102
|
+
err = js_call_function_with_checkpoint(env, cb, ctx, error, keys, values);
|
|
1103
|
+
(void) err;
|
|
1123
1104
|
}
|
|
1105
|
+
|
|
1106
|
+
err = js_close_handle_scope(env, scope);
|
|
1107
|
+
assert(err == 0);
|
|
1124
1108
|
}
|
|
1125
1109
|
|
|
1126
1110
|
static void
|
|
@@ -1139,8 +1123,6 @@ rocksdb_native_iterator_read(
|
|
|
1139
1123
|
|
|
1140
1124
|
throw js_pending_exception;
|
|
1141
1125
|
}
|
|
1142
|
-
|
|
1143
|
-
req->active = true;
|
|
1144
1126
|
}
|
|
1145
1127
|
|
|
1146
1128
|
static js_arraybuffer_t
|
|
@@ -1189,57 +1171,56 @@ rocksdb_native__on_read(rocksdb_read_batch_t *handle, int status) {
|
|
|
1189
1171
|
|
|
1190
1172
|
auto db = reinterpret_cast<rocksdb_native_t *>(req->handle.req.db);
|
|
1191
1173
|
|
|
1174
|
+
auto len = req->handle.len;
|
|
1175
|
+
|
|
1192
1176
|
auto env = req->env;
|
|
1193
1177
|
|
|
1194
|
-
|
|
1178
|
+
js_handle_scope_t *scope;
|
|
1179
|
+
err = js_open_handle_scope(env, &scope);
|
|
1180
|
+
assert(err == 0);
|
|
1195
1181
|
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
char *error = req->handle.errors[i];
|
|
1182
|
+
js_receiver_t ctx;
|
|
1183
|
+
err = js_get_reference_value(env, req->ctx, ctx);
|
|
1184
|
+
assert(err == 0);
|
|
1200
1185
|
|
|
1201
|
-
|
|
1186
|
+
rocksdb_native_on_read_t cb;
|
|
1187
|
+
err = js_get_reference_value(env, req->on_read, cb);
|
|
1188
|
+
assert(err == 0);
|
|
1202
1189
|
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
}
|
|
1190
|
+
req->on_read.reset();
|
|
1191
|
+
req->ctx.reset();
|
|
1206
1192
|
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
js_handle_scope_t *scope;
|
|
1211
|
-
err = js_open_handle_scope(env, &scope);
|
|
1212
|
-
assert(err == 0);
|
|
1193
|
+
js_array_t errors;
|
|
1194
|
+
err = js_create_array(env, len, errors);
|
|
1195
|
+
assert(err == 0);
|
|
1213
1196
|
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1197
|
+
js_array_t values;
|
|
1198
|
+
err = js_create_array(env, len, values);
|
|
1199
|
+
assert(err == 0);
|
|
1217
1200
|
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
assert(err == 0);
|
|
1201
|
+
for (size_t i = 0; i < len; i++) {
|
|
1202
|
+
char *error = req->handle.errors[i];
|
|
1221
1203
|
|
|
1222
|
-
|
|
1223
|
-
|
|
1204
|
+
if (error) {
|
|
1205
|
+
js_string_t result;
|
|
1224
1206
|
|
|
1225
|
-
|
|
1226
|
-
|
|
1207
|
+
err = js_create_string(env, error, result);
|
|
1208
|
+
assert(err == 0);
|
|
1227
1209
|
|
|
1228
|
-
|
|
1229
|
-
|
|
1210
|
+
err = js_set_element(env, errors, i, result);
|
|
1211
|
+
assert(err == 0);
|
|
1212
|
+
} else {
|
|
1213
|
+
rocksdb_slice_t *value = &req->reads[i].value;
|
|
1230
1214
|
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
} else {
|
|
1215
|
+
if (db->exiting) rocksdb_slice_destroy(value);
|
|
1216
|
+
else {
|
|
1234
1217
|
js_arraybuffer_t result;
|
|
1235
1218
|
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
if (slice->data == nullptr && slice->len == size_t(-1)) {
|
|
1219
|
+
if (value->data == nullptr && value->len == size_t(-1)) {
|
|
1239
1220
|
err = js_get_null(env, static_cast<js_value_t **>(result));
|
|
1240
1221
|
assert(err == 0);
|
|
1241
1222
|
} else {
|
|
1242
|
-
err = rocksdb_native__try_create_external_arraybuffer(env, const_cast<char *>(
|
|
1223
|
+
err = rocksdb_native__try_create_external_arraybuffer(env, const_cast<char *>(value->data), value->len, result);
|
|
1243
1224
|
assert(err == 0);
|
|
1244
1225
|
}
|
|
1245
1226
|
|
|
@@ -1247,23 +1228,15 @@ rocksdb_native__on_read(rocksdb_read_batch_t *handle, int status) {
|
|
|
1247
1228
|
assert(err == 0);
|
|
1248
1229
|
}
|
|
1249
1230
|
}
|
|
1231
|
+
}
|
|
1250
1232
|
|
|
1251
|
-
|
|
1252
|
-
err =
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
rocksdb_native_on_read_t cb;
|
|
1256
|
-
err = js_get_reference_value(env, req->on_read, cb);
|
|
1257
|
-
assert(err == 0);
|
|
1258
|
-
|
|
1259
|
-
req->on_read.reset();
|
|
1260
|
-
req->ctx.reset();
|
|
1261
|
-
|
|
1262
|
-
js_call_function_with_checkpoint(env, cb, ctx, errors, values);
|
|
1263
|
-
|
|
1264
|
-
err = js_close_handle_scope(env, scope);
|
|
1265
|
-
assert(err == 0);
|
|
1233
|
+
if (!db->exiting) {
|
|
1234
|
+
err = js_call_function_with_checkpoint(env, cb, ctx, errors, values);
|
|
1235
|
+
(void) err;
|
|
1266
1236
|
}
|
|
1237
|
+
|
|
1238
|
+
err = js_close_handle_scope(env, scope);
|
|
1239
|
+
assert(err == 0);
|
|
1267
1240
|
}
|
|
1268
1241
|
|
|
1269
1242
|
static void
|
|
@@ -1393,37 +1366,35 @@ rocksdb_native__on_write(rocksdb_write_batch_t *handle, int status) {
|
|
|
1393
1366
|
|
|
1394
1367
|
auto env = req->env;
|
|
1395
1368
|
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
} else {
|
|
1400
|
-
js_handle_scope_t *scope;
|
|
1401
|
-
err = js_open_handle_scope(env, &scope);
|
|
1402
|
-
assert(err == 0);
|
|
1403
|
-
|
|
1404
|
-
std::optional<js_string_t> error;
|
|
1405
|
-
|
|
1406
|
-
if (req->handle.error) {
|
|
1407
|
-
err = js_create_string(env, req->handle.error, error.emplace());
|
|
1408
|
-
assert(err == 0);
|
|
1409
|
-
}
|
|
1369
|
+
js_handle_scope_t *scope;
|
|
1370
|
+
err = js_open_handle_scope(env, &scope);
|
|
1371
|
+
assert(err == 0);
|
|
1410
1372
|
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1373
|
+
js_receiver_t ctx;
|
|
1374
|
+
err = js_get_reference_value(env, req->ctx, ctx);
|
|
1375
|
+
assert(err == 0);
|
|
1414
1376
|
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1377
|
+
rocksdb_native_on_write_t cb;
|
|
1378
|
+
err = js_get_reference_value(env, req->on_write, cb);
|
|
1379
|
+
assert(err == 0);
|
|
1418
1380
|
|
|
1419
|
-
|
|
1420
|
-
|
|
1381
|
+
req->on_write.reset();
|
|
1382
|
+
req->ctx.reset();
|
|
1421
1383
|
|
|
1422
|
-
|
|
1384
|
+
std::optional<js_string_t> error;
|
|
1423
1385
|
|
|
1424
|
-
|
|
1386
|
+
if (req->handle.error) {
|
|
1387
|
+
err = js_create_string(env, req->handle.error, error.emplace());
|
|
1425
1388
|
assert(err == 0);
|
|
1426
1389
|
}
|
|
1390
|
+
|
|
1391
|
+
if (!db->exiting) {
|
|
1392
|
+
err = js_call_function_with_checkpoint(env, cb, ctx, error);
|
|
1393
|
+
(void) err;
|
|
1394
|
+
}
|
|
1395
|
+
|
|
1396
|
+
err = js_close_handle_scope(env, scope);
|
|
1397
|
+
assert(err == 0);
|
|
1427
1398
|
}
|
|
1428
1399
|
|
|
1429
1400
|
static void
|
|
@@ -1544,37 +1515,35 @@ rocksdb_native__on_flush(rocksdb_flush_t *handle, int status) {
|
|
|
1544
1515
|
|
|
1545
1516
|
auto env = req->env;
|
|
1546
1517
|
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
} else {
|
|
1551
|
-
js_handle_scope_t *scope;
|
|
1552
|
-
err = js_open_handle_scope(env, &scope);
|
|
1553
|
-
assert(err == 0);
|
|
1554
|
-
|
|
1555
|
-
std::optional<js_string_t> error;
|
|
1556
|
-
|
|
1557
|
-
if (req->handle.error) {
|
|
1558
|
-
err = js_create_string(env, req->handle.error, error.emplace());
|
|
1559
|
-
assert(err == 0);
|
|
1560
|
-
}
|
|
1518
|
+
js_handle_scope_t *scope;
|
|
1519
|
+
err = js_open_handle_scope(env, &scope);
|
|
1520
|
+
assert(err == 0);
|
|
1561
1521
|
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1522
|
+
js_receiver_t ctx;
|
|
1523
|
+
err = js_get_reference_value(env, req->ctx, ctx);
|
|
1524
|
+
assert(err == 0);
|
|
1565
1525
|
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1526
|
+
rocksdb_native_on_flush_t cb;
|
|
1527
|
+
err = js_get_reference_value(env, req->on_flush, cb);
|
|
1528
|
+
assert(err == 0);
|
|
1569
1529
|
|
|
1570
|
-
|
|
1571
|
-
|
|
1530
|
+
req->on_flush.reset();
|
|
1531
|
+
req->ctx.reset();
|
|
1572
1532
|
|
|
1573
|
-
|
|
1533
|
+
std::optional<js_string_t> error;
|
|
1574
1534
|
|
|
1575
|
-
|
|
1535
|
+
if (req->handle.error) {
|
|
1536
|
+
err = js_create_string(env, req->handle.error, error.emplace());
|
|
1576
1537
|
assert(err == 0);
|
|
1577
1538
|
}
|
|
1539
|
+
|
|
1540
|
+
if (!db->exiting) {
|
|
1541
|
+
err = js_call_function_with_checkpoint(env, cb, ctx, error);
|
|
1542
|
+
(void) err;
|
|
1543
|
+
}
|
|
1544
|
+
|
|
1545
|
+
err = js_close_handle_scope(env, scope);
|
|
1546
|
+
assert(err == 0);
|
|
1578
1547
|
}
|
|
1579
1548
|
|
|
1580
1549
|
static js_arraybuffer_t
|
|
@@ -1626,37 +1595,35 @@ rocksdb_native__on_compact_range(rocksdb_compact_range_t *handle, int status) {
|
|
|
1626
1595
|
|
|
1627
1596
|
auto env = req->env;
|
|
1628
1597
|
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
} else {
|
|
1633
|
-
js_handle_scope_t *scope;
|
|
1634
|
-
err = js_open_handle_scope(env, &scope);
|
|
1635
|
-
assert(err == 0);
|
|
1636
|
-
|
|
1637
|
-
std::optional<js_string_t> error;
|
|
1638
|
-
|
|
1639
|
-
if (req->handle.error) {
|
|
1640
|
-
err = js_create_string(env, req->handle.error, error.emplace());
|
|
1641
|
-
assert(err == 0);
|
|
1642
|
-
}
|
|
1598
|
+
js_handle_scope_t *scope;
|
|
1599
|
+
err = js_open_handle_scope(env, &scope);
|
|
1600
|
+
assert(err == 0);
|
|
1643
1601
|
|
|
1644
|
-
|
|
1645
|
-
|
|
1646
|
-
|
|
1602
|
+
js_receiver_t ctx;
|
|
1603
|
+
err = js_get_reference_value(env, req->ctx, ctx);
|
|
1604
|
+
assert(err == 0);
|
|
1647
1605
|
|
|
1648
|
-
|
|
1649
|
-
|
|
1650
|
-
|
|
1606
|
+
rocksdb_native_on_compact_range_t cb;
|
|
1607
|
+
err = js_get_reference_value(env, req->on_compact_range, cb);
|
|
1608
|
+
assert(err == 0);
|
|
1651
1609
|
|
|
1652
|
-
|
|
1653
|
-
|
|
1610
|
+
req->on_compact_range.reset();
|
|
1611
|
+
req->ctx.reset();
|
|
1654
1612
|
|
|
1655
|
-
|
|
1613
|
+
std::optional<js_string_t> error;
|
|
1656
1614
|
|
|
1657
|
-
|
|
1615
|
+
if (req->handle.error) {
|
|
1616
|
+
err = js_create_string(env, req->handle.error, error.emplace());
|
|
1658
1617
|
assert(err == 0);
|
|
1659
1618
|
}
|
|
1619
|
+
|
|
1620
|
+
if (!db->exiting) {
|
|
1621
|
+
err = js_call_function_with_checkpoint(env, cb, ctx, error);
|
|
1622
|
+
(void) err;
|
|
1623
|
+
}
|
|
1624
|
+
|
|
1625
|
+
err = js_close_handle_scope(env, scope);
|
|
1626
|
+
assert(err == 0);
|
|
1660
1627
|
}
|
|
1661
1628
|
|
|
1662
1629
|
static js_arraybuffer_t
|
|
@@ -1724,37 +1691,35 @@ rocksdb_native__on_approximate_size(rocksdb_approximate_size_t *handle, int stat
|
|
|
1724
1691
|
|
|
1725
1692
|
auto env = req->env;
|
|
1726
1693
|
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
} else {
|
|
1731
|
-
js_handle_scope_t *scope;
|
|
1732
|
-
err = js_open_handle_scope(env, &scope);
|
|
1733
|
-
assert(err == 0);
|
|
1734
|
-
|
|
1735
|
-
std::optional<js_string_t> error;
|
|
1736
|
-
|
|
1737
|
-
if (req->handle.error) {
|
|
1738
|
-
err = js_create_string(env, req->handle.error, error.emplace());
|
|
1739
|
-
assert(err == 0);
|
|
1740
|
-
}
|
|
1694
|
+
js_handle_scope_t *scope;
|
|
1695
|
+
err = js_open_handle_scope(env, &scope);
|
|
1696
|
+
assert(err == 0);
|
|
1741
1697
|
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
|
|
1698
|
+
js_receiver_t ctx;
|
|
1699
|
+
err = js_get_reference_value(env, req->ctx, ctx);
|
|
1700
|
+
assert(err == 0);
|
|
1745
1701
|
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
|
|
1702
|
+
rocksdb_native_on_approximate_size_t cb;
|
|
1703
|
+
err = js_get_reference_value(env, req->on_approximate_size, cb);
|
|
1704
|
+
assert(err == 0);
|
|
1749
1705
|
|
|
1750
|
-
|
|
1751
|
-
|
|
1706
|
+
req->on_approximate_size.reset();
|
|
1707
|
+
req->ctx.reset();
|
|
1752
1708
|
|
|
1753
|
-
|
|
1709
|
+
std::optional<js_string_t> error;
|
|
1754
1710
|
|
|
1755
|
-
|
|
1711
|
+
if (req->handle.error) {
|
|
1712
|
+
err = js_create_string(env, req->handle.error, error.emplace());
|
|
1756
1713
|
assert(err == 0);
|
|
1757
1714
|
}
|
|
1715
|
+
|
|
1716
|
+
if (!db->exiting) {
|
|
1717
|
+
err = js_call_function_with_checkpoint(env, cb, ctx, error, req->handle.result);
|
|
1718
|
+
(void) err;
|
|
1719
|
+
}
|
|
1720
|
+
|
|
1721
|
+
err = js_close_handle_scope(env, scope);
|
|
1722
|
+
assert(err == 0);
|
|
1758
1723
|
}
|
|
1759
1724
|
|
|
1760
1725
|
static js_arraybuffer_t
|
package/package.json
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|