rrudb 0.0.2 → 0.0.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.
- checksums.yaml +4 -4
- data/examples/each.rb +37 -0
- data/ext/rudb/rudb.cpp +19 -0
- data/lib/rudb/version.rb +1 -1
- data/lib/rudb.rb +8 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f370cffff83adbbec822fdeb83d4cd96e768351fb0a592473d1aeddafaa7d413
|
4
|
+
data.tar.gz: 52413e39845297cd3c63ff23309645795a2145d7252b99327d9a4c9778047c38
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4bd35fd8dae07048ce9889453b7b70197a95cf7b6aef3c81e2dbb91ce887cb618fa85bc800ac4ac542fd4867b424a4c1fc6456861e6a8795ac9b1b68f5ad208b
|
7
|
+
data.tar.gz: 5038eae0823c6ba1c465976e07008e746fff3865165ce22b6eecf4024c14622b880eabca77281261deaef4e56e39e652f9eb687f7a18db1b83ee436423bc5f3d
|
data/examples/each.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'rudb'
|
2
|
+
|
3
|
+
N = 10
|
4
|
+
KEY_SIZE = 32/8 # => sizeof(uint32_t) = 4 bytes
|
5
|
+
|
6
|
+
dat_path = 'db.dat'
|
7
|
+
key_path = 'db.key'
|
8
|
+
log_path = 'db.log'
|
9
|
+
|
10
|
+
RuDB::create :dat_path => dat_path,
|
11
|
+
:key_path => key_path,
|
12
|
+
:log_path => log_path,
|
13
|
+
:app_num => 1,
|
14
|
+
:salt => RuDB::make_salt,
|
15
|
+
:key_size => KEY_SIZE,
|
16
|
+
:block_size => RuDB::block_size('.'),
|
17
|
+
:load_factor => 0.5
|
18
|
+
|
19
|
+
db = RuDB::Store.new
|
20
|
+
db.open(dat_path, key_path, log_path)
|
21
|
+
|
22
|
+
0.upto(N) { |i|
|
23
|
+
kv = [i].pack("L")
|
24
|
+
db.insert(kv, kv)
|
25
|
+
}
|
26
|
+
|
27
|
+
db.close
|
28
|
+
|
29
|
+
RuDB::each(dat_path) { |key, value|
|
30
|
+
uk = key.unpack("L").first
|
31
|
+
uv = value.unpack("L").first
|
32
|
+
puts "#{uk}: #{uv}"
|
33
|
+
}
|
34
|
+
|
35
|
+
RuDB::erase_file dat_path
|
36
|
+
RuDB::erase_file key_path
|
37
|
+
RuDB::erase_file log_path
|
data/ext/rudb/rudb.cpp
CHANGED
@@ -99,6 +99,24 @@ VALUE rudb_block_size(VALUE _self, VALUE _path) {
|
|
99
99
|
return INT2NUM(nudb::block_size(path));
|
100
100
|
}
|
101
101
|
|
102
|
+
// TODO parameterize progress callback
|
103
|
+
VALUE rudb_visit(VALUE _self, VALUE path, VALUE callback){
|
104
|
+
Check_Type(path, T_STRING);
|
105
|
+
std::string _path = std::string((char*)RSTRING_PTR(path), RSTRING_LEN(path));
|
106
|
+
|
107
|
+
nudb::error_code ec;
|
108
|
+
nudb::visit(_path, [&](void const* key, std::size_t key_size,
|
109
|
+
void const* val, std::size_t val_size,
|
110
|
+
nudb::error_code& ec1){
|
111
|
+
VALUE key_str = rb_str_new((char const*)key, key_size);
|
112
|
+
VALUE val_str = rb_str_new((char const*)val, val_size);
|
113
|
+
|
114
|
+
rb_funcall(callback, rb_intern("call"), 2, key_str, val_str);
|
115
|
+
}, nudb::no_progress{}, ec);
|
116
|
+
|
117
|
+
return ec2obj(new nudb::error_code(ec));
|
118
|
+
}
|
119
|
+
|
102
120
|
///
|
103
121
|
|
104
122
|
void db_free(nudb_store_pointer* store_pointer){
|
@@ -218,6 +236,7 @@ extern "C"{
|
|
218
236
|
rb_define_singleton_method(mRuDB, "erase_file", (METHOD)rudb_erase_file, 1);
|
219
237
|
rb_define_singleton_method(mRuDB, "make_salt", (METHOD)rudb_make_salt, 0);
|
220
238
|
rb_define_singleton_method(mRuDB, "block_size", (METHOD)rudb_block_size, 1);
|
239
|
+
rb_define_singleton_method(mRuDB, "visit", (METHOD)rudb_visit, 2);
|
221
240
|
|
222
241
|
cRuDB_store = rb_define_class_under(mRuDB, "Store", rb_cObject);
|
223
242
|
rb_define_alloc_func(cRuDB_store, store_alloc);
|
data/lib/rudb/version.rb
CHANGED
data/lib/rudb.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rrudb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dev Null Productions
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-05-
|
11
|
+
date: 2019-05-15 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Ruby NuDB Wrapper
|
14
14
|
email:
|
@@ -21,6 +21,7 @@ files:
|
|
21
21
|
- ".yardopts"
|
22
22
|
- LICENSE.txt
|
23
23
|
- README.md
|
24
|
+
- examples/each.rb
|
24
25
|
- examples/example.rb
|
25
26
|
- ext/rudb/NuDB/include/nudb/CMakeLists.txt
|
26
27
|
- ext/rudb/NuDB/include/nudb/_experimental/basic_seconds_clock.hpp
|