rrudb 0.0.2

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.
Files changed (61) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +1 -0
  3. data/LICENSE.txt +22 -0
  4. data/README.md +26 -0
  5. data/examples/example.rb +39 -0
  6. data/ext/rudb/NuDB/include/nudb/CMakeLists.txt +104 -0
  7. data/ext/rudb/NuDB/include/nudb/_experimental/basic_seconds_clock.hpp +200 -0
  8. data/ext/rudb/NuDB/include/nudb/_experimental/chrono_util.hpp +58 -0
  9. data/ext/rudb/NuDB/include/nudb/_experimental/test/fail_file.hpp +343 -0
  10. data/ext/rudb/NuDB/include/nudb/_experimental/test/temp_dir.hpp +73 -0
  11. data/ext/rudb/NuDB/include/nudb/_experimental/test/test_store.hpp +451 -0
  12. data/ext/rudb/NuDB/include/nudb/_experimental/test/xor_shift_engine.hpp +105 -0
  13. data/ext/rudb/NuDB/include/nudb/_experimental/util.hpp +288 -0
  14. data/ext/rudb/NuDB/include/nudb/basic_store.hpp +461 -0
  15. data/ext/rudb/NuDB/include/nudb/concepts.hpp +205 -0
  16. data/ext/rudb/NuDB/include/nudb/context.hpp +144 -0
  17. data/ext/rudb/NuDB/include/nudb/create.hpp +117 -0
  18. data/ext/rudb/NuDB/include/nudb/detail/arena.hpp +296 -0
  19. data/ext/rudb/NuDB/include/nudb/detail/bucket.hpp +473 -0
  20. data/ext/rudb/NuDB/include/nudb/detail/buffer.hpp +86 -0
  21. data/ext/rudb/NuDB/include/nudb/detail/bulkio.hpp +196 -0
  22. data/ext/rudb/NuDB/include/nudb/detail/cache.hpp +236 -0
  23. data/ext/rudb/NuDB/include/nudb/detail/endian.hpp +93 -0
  24. data/ext/rudb/NuDB/include/nudb/detail/field.hpp +265 -0
  25. data/ext/rudb/NuDB/include/nudb/detail/format.hpp +630 -0
  26. data/ext/rudb/NuDB/include/nudb/detail/gentex.hpp +259 -0
  27. data/ext/rudb/NuDB/include/nudb/detail/mutex.hpp +26 -0
  28. data/ext/rudb/NuDB/include/nudb/detail/pool.hpp +243 -0
  29. data/ext/rudb/NuDB/include/nudb/detail/store_base.hpp +45 -0
  30. data/ext/rudb/NuDB/include/nudb/detail/stream.hpp +149 -0
  31. data/ext/rudb/NuDB/include/nudb/detail/xxhash.hpp +328 -0
  32. data/ext/rudb/NuDB/include/nudb/error.hpp +257 -0
  33. data/ext/rudb/NuDB/include/nudb/file.hpp +55 -0
  34. data/ext/rudb/NuDB/include/nudb/impl/basic_store.ipp +785 -0
  35. data/ext/rudb/NuDB/include/nudb/impl/context.ipp +241 -0
  36. data/ext/rudb/NuDB/include/nudb/impl/create.ipp +163 -0
  37. data/ext/rudb/NuDB/include/nudb/impl/error.ipp +175 -0
  38. data/ext/rudb/NuDB/include/nudb/impl/posix_file.ipp +248 -0
  39. data/ext/rudb/NuDB/include/nudb/impl/recover.ipp +209 -0
  40. data/ext/rudb/NuDB/include/nudb/impl/rekey.ipp +248 -0
  41. data/ext/rudb/NuDB/include/nudb/impl/verify.ipp +634 -0
  42. data/ext/rudb/NuDB/include/nudb/impl/visit.ipp +96 -0
  43. data/ext/rudb/NuDB/include/nudb/impl/win32_file.ipp +264 -0
  44. data/ext/rudb/NuDB/include/nudb/native_file.hpp +76 -0
  45. data/ext/rudb/NuDB/include/nudb/nudb.hpp +27 -0
  46. data/ext/rudb/NuDB/include/nudb/posix_file.hpp +228 -0
  47. data/ext/rudb/NuDB/include/nudb/progress.hpp +32 -0
  48. data/ext/rudb/NuDB/include/nudb/recover.hpp +73 -0
  49. data/ext/rudb/NuDB/include/nudb/rekey.hpp +110 -0
  50. data/ext/rudb/NuDB/include/nudb/store.hpp +27 -0
  51. data/ext/rudb/NuDB/include/nudb/type_traits.hpp +63 -0
  52. data/ext/rudb/NuDB/include/nudb/verify.hpp +200 -0
  53. data/ext/rudb/NuDB/include/nudb/version.hpp +21 -0
  54. data/ext/rudb/NuDB/include/nudb/visit.hpp +63 -0
  55. data/ext/rudb/NuDB/include/nudb/win32_file.hpp +246 -0
  56. data/ext/rudb/NuDB/include/nudb/xxhasher.hpp +45 -0
  57. data/ext/rudb/extconf.rb +12 -0
  58. data/ext/rudb/rudb.cpp +234 -0
  59. data/lib/rudb/version.rb +3 -0
  60. data/lib/rudb.rb +1 -0
  61. metadata +104 -0
@@ -0,0 +1,246 @@
1
+ //
2
+ // Copyright (c) 2015-2016 Vinnie Falco (vinnie dot falco at gmail dot com)
3
+ //
4
+ // Distributed under the Boost Software License, Version 1.0. (See accompanying
5
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6
+ //
7
+
8
+ #ifndef NUDB_DETAIL_WIN32_FILE_HPP
9
+ #define NUDB_DETAIL_WIN32_FILE_HPP
10
+
11
+ #include <nudb/file.hpp>
12
+ #include <nudb/error.hpp>
13
+ #include <cstddef>
14
+ #include <cstdint>
15
+ #include <string>
16
+
17
+ #ifndef NUDB_WIN32_FILE
18
+ # ifdef _MSC_VER
19
+ # define NUDB_WIN32_FILE 1
20
+ # else
21
+ # define NUDB_WIN32_FILE 0
22
+ # endif
23
+ #endif
24
+
25
+ #if NUDB_WIN32_FILE
26
+ #pragma push_macro("NOMINMAX")
27
+ #pragma push_macro("UNICODE")
28
+ #pragma push_macro("STRICT")
29
+ # ifndef NOMINMAX
30
+ # define NOMINMAX
31
+ # endif
32
+ # ifndef UNICODE
33
+ # define UNICODE
34
+ # endif
35
+ # ifndef STRICT
36
+ # define STRICT
37
+ # endif
38
+ # ifndef WIN32_LEAN_AND_MEAN
39
+ # define WIN32_LEAN_AND_MEAN
40
+ # endif
41
+ # include <Windows.h>
42
+ #pragma pop_macro("STRICT")
43
+ #pragma pop_macro("UNICODE")
44
+ #pragma pop_macro("NOMINMAX")
45
+ #endif
46
+
47
+ #if NUDB_WIN32_FILE
48
+
49
+ namespace nudb {
50
+
51
+ /** A descriptor to a Win32 file.
52
+
53
+ This class provides a Win32 implementation of the @b File
54
+ concept.
55
+ */
56
+ class win32_file
57
+ {
58
+ HANDLE hf_ = INVALID_HANDLE_VALUE;
59
+
60
+ public:
61
+ /// Constructor
62
+ win32_file() = default;
63
+
64
+ /// Copy constructor (disallowed)
65
+ win32_file(win32_file const&) = delete;
66
+
67
+ // Copy assignment (disallowed)
68
+ win32_file& operator=(win32_file const&) = delete;
69
+
70
+ /** Destructor.
71
+
72
+ If open, the file is closed.
73
+ */
74
+ ~win32_file();
75
+
76
+ /** Move constructor.
77
+
78
+ @note The state of the moved-from object is as if default constructed.
79
+ */
80
+ win32_file(win32_file&&);
81
+
82
+ /** Move assignment.
83
+
84
+ @note The state of the moved-from object is as if default constructed.
85
+ */
86
+ win32_file&
87
+ operator=(win32_file&& other);
88
+
89
+ /// Returns `true` if the file is open.
90
+ bool
91
+ is_open() const
92
+ {
93
+ return hf_ != INVALID_HANDLE_VALUE;
94
+ }
95
+
96
+ /// Close the file if it is open.
97
+ void
98
+ close();
99
+
100
+ /** Create a new file.
101
+
102
+ After the file is created, it is opened as if by `open(mode, path, ec)`.
103
+
104
+ @par Requirements
105
+
106
+ The file must not already exist, or else `errc::file_exists`
107
+ is returned.
108
+
109
+ @param mode The open mode, which must be a valid @ref file_mode.
110
+
111
+ @param path The path of the file to create.
112
+
113
+ @param ec Set to the error, if any occurred.
114
+ */
115
+ void
116
+ create(file_mode mode, path_type const& path, error_code& ec);
117
+
118
+ /** Open a file.
119
+
120
+ @par Requirements
121
+
122
+ The file must not already be open.
123
+
124
+ @param mode The open mode, which must be a valid @ref file_mode.
125
+
126
+ @param path The path of the file to open.
127
+
128
+ @param ec Set to the error, if any occurred.
129
+ */
130
+ void
131
+ open(file_mode mode, path_type const& path, error_code& ec);
132
+
133
+ /** Remove a file from the file system.
134
+
135
+ It is not an error to attempt to erase a file that does not exist.
136
+
137
+ @param path The path of the file to remove.
138
+
139
+ @param ec Set to the error, if any occurred.
140
+ */
141
+ static
142
+ void
143
+ erase(path_type const& path, error_code& ec);
144
+
145
+ /** Return the size of the file.
146
+
147
+ @par Requirements
148
+
149
+ The file must be open.
150
+
151
+ @param ec Set to the error, if any occurred.
152
+
153
+ @return The size of the file, in bytes.
154
+ */
155
+ std::uint64_t
156
+ size(error_code& ec) const;
157
+
158
+ /** Read data from a location in the file.
159
+
160
+ @par Requirements
161
+
162
+ The file must be open.
163
+
164
+ @param offset The position in the file to read from,
165
+ expressed as a byte offset from the beginning.
166
+
167
+ @param buffer The location to store the data.
168
+
169
+ @param bytes The number of bytes to read.
170
+
171
+ @param ec Set to the error, if any occurred.
172
+ */
173
+ void
174
+ read(std::uint64_t offset,
175
+ void* buffer, std::size_t bytes, error_code& ec);
176
+
177
+ /** Write data to a location in the file.
178
+
179
+ @par Requirements
180
+
181
+ The file must be open with a mode allowing writes.
182
+
183
+ @param offset The position in the file to write from,
184
+ expressed as a byte offset from the beginning.
185
+
186
+ @param buffer The data the write.
187
+
188
+ @param bytes The number of bytes to write.
189
+
190
+ @param ec Set to the error, if any occurred.
191
+ */
192
+ void
193
+ write(std::uint64_t offset,
194
+ void const* buffer, std::size_t bytes, error_code& ec);
195
+
196
+ /** Perform a low level file synchronization.
197
+
198
+ @par Requirements
199
+
200
+ The file must be open with a mode allowing writes.
201
+
202
+ @param ec Set to the error, if any occurred.
203
+ */
204
+ void
205
+ sync(error_code& ec);
206
+
207
+ /** Truncate the file at a specific size.
208
+
209
+ @par Requirements
210
+
211
+ The file must be open with a mode allowing writes.
212
+
213
+ @param length The new file size.
214
+
215
+ @param ec Set to the error, if any occurred.
216
+ */
217
+ void
218
+ trunc(std::uint64_t length, error_code& ec);
219
+
220
+ private:
221
+ static
222
+ void
223
+ err(DWORD dwError, error_code& ec)
224
+ {
225
+ ec = error_code{static_cast<int>(dwError), system_category()};
226
+ }
227
+
228
+ static
229
+ void
230
+ last_err(error_code& ec)
231
+ {
232
+ err(::GetLastError(), ec);
233
+ }
234
+
235
+ static
236
+ std::pair<DWORD, DWORD>
237
+ flags(file_mode mode);
238
+ };
239
+
240
+ } // nudb
241
+
242
+ #include <nudb/impl/win32_file.ipp>
243
+
244
+ #endif
245
+
246
+ #endif
@@ -0,0 +1,45 @@
1
+ //
2
+ // Copyright (c) 2015-2016 Vinnie Falco (vinnie dot falco at gmail dot com)
3
+ //
4
+ // Distributed under the Boost Software License, Version 1.0. (See accompanying
5
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6
+ //
7
+
8
+ #ifndef NUDB_XXHASHER_HPP
9
+ #define NUDB_XXHASHER_HPP
10
+
11
+ #include <nudb/detail/xxhash.hpp>
12
+ #include <cstddef>
13
+ #include <cstdint>
14
+ #include <type_traits>
15
+
16
+ namespace nudb {
17
+
18
+ /** A Hasher that uses xxHash.
19
+
20
+ This object meets the requirements of @b Hasher. It is
21
+ the default hash function unless otherwise specified.
22
+ */
23
+ class xxhasher
24
+ {
25
+ std::uint64_t seed_;
26
+
27
+ public:
28
+ using result_type = std::uint64_t;
29
+
30
+ explicit
31
+ xxhasher(std::uint64_t seed)
32
+ : seed_(seed)
33
+ {
34
+ }
35
+
36
+ result_type
37
+ operator()(void const* data, std::size_t bytes) const noexcept
38
+ {
39
+ return detail::XXH64(data, bytes, seed_);
40
+ }
41
+ };
42
+
43
+ } // nudb
44
+
45
+ #endif
@@ -0,0 +1,12 @@
1
+ require "mkmf"
2
+
3
+ RbConfig::CONFIG["CPP"] = "g++ -E -std=gnu++11"
4
+ $INCFLAGS << " -I./NuDB/include"
5
+
6
+ have_library("boost_thread")
7
+ have_library("boost_system")
8
+
9
+ abort "Can't find header or library of NuDB" unless have_header('nudb/nudb.hpp')
10
+
11
+ create_header
12
+ create_makefile("rudb")
data/ext/rudb/rudb.cpp ADDED
@@ -0,0 +1,234 @@
1
+ #include RUBY_EXTCONF_H
2
+
3
+ #include <ruby.h>
4
+ #include <nudb/nudb.hpp>
5
+
6
+ static VALUE mRuDB;
7
+ static VALUE cRuDB_store;
8
+ static VALUE cRuDB_ec;
9
+
10
+ struct nudb_store_pointer {
11
+ nudb::store* store;
12
+ };
13
+
14
+ ///
15
+
16
+ // TODO pull in error_category (requires ref mark?)
17
+
18
+ void ec_free(nudb::error_code* ec_pointer){
19
+ delete ec_pointer;
20
+ }
21
+
22
+ VALUE ec2obj(nudb::error_code* ec){
23
+ return Data_Wrap_Struct(cRuDB_ec, 0, ec_free, ec);
24
+ }
25
+
26
+ VALUE rudb_ec_value(VALUE _self){
27
+ nudb::error_code* ec_pointer;
28
+ Data_Get_Struct(_self, nudb::error_code , ec_pointer);
29
+ return INT2NUM(ec_pointer->value());
30
+ }
31
+
32
+ VALUE rudb_ec_message(VALUE _self){
33
+ nudb::error_code* ec_pointer;
34
+ Data_Get_Struct(_self, nudb::error_code , ec_pointer);
35
+ return rb_str_new_cstr(ec_pointer->message().c_str());
36
+ }
37
+
38
+ ///
39
+
40
+ VALUE rudb_create(VALUE _self, VALUE opts) {
41
+ VALUE dat = rb_hash_aref(opts, ID2SYM(rb_intern("dat_path")));
42
+ VALUE key = rb_hash_aref(opts, ID2SYM(rb_intern("key_path")));
43
+ VALUE log = rb_hash_aref(opts, ID2SYM(rb_intern("log_path")));
44
+ VALUE app_num = rb_hash_aref(opts, ID2SYM(rb_intern("app_num")));
45
+ VALUE salt = rb_hash_aref(opts, ID2SYM(rb_intern("salt")));
46
+ VALUE key_size = rb_hash_aref(opts, ID2SYM(rb_intern("key_size")));
47
+ VALUE block_size = rb_hash_aref(opts, ID2SYM(rb_intern("block_size")));
48
+ VALUE load_factor = rb_hash_aref(opts, ID2SYM(rb_intern("load_factor")));
49
+
50
+ Check_Type(dat, T_STRING);
51
+ Check_Type(key, T_STRING);
52
+ Check_Type(log, T_STRING);
53
+ Check_Type(app_num, T_FIXNUM);
54
+ Check_Type(salt, T_FIXNUM);
55
+ Check_Type(key_size, T_FIXNUM);
56
+ Check_Type(block_size, T_FIXNUM);
57
+ Check_Type(load_factor, T_FLOAT);
58
+
59
+ std::string _dat = std::string((char*)RSTRING_PTR(dat), RSTRING_LEN(dat));
60
+ std::string _key = std::string((char*)RSTRING_PTR(key), RSTRING_LEN(key));
61
+ std::string _log = std::string((char*)RSTRING_PTR(log), RSTRING_LEN(log));
62
+
63
+ std::uint64_t _app_num = NUM2ULL(app_num);
64
+ std::uint64_t _salt = NUM2ULL(salt);
65
+ nudb::nsize_t _key_size = NUM2UINT(key_size);
66
+ nudb::nsize_t _block_size = NUM2UINT(block_size);
67
+ float _load_factor = NUM2DBL(load_factor);
68
+
69
+ // TODO parameterize hasher typer
70
+ nudb::error_code ec;
71
+ nudb::create<nudb::xxhasher>(_dat, _key, _log,
72
+ _app_num,
73
+ _salt,
74
+ _key_size,
75
+ _block_size,
76
+ _load_factor,
77
+ ec);
78
+
79
+ return ec2obj(new nudb::error_code(ec));
80
+ }
81
+
82
+ VALUE rudb_erase_file(VALUE _self, VALUE file) {
83
+ Check_Type(file, T_STRING);
84
+ std::string fil = std::string((char*)RSTRING_PTR(file), RSTRING_LEN(file));
85
+
86
+ nudb::error_code ec;
87
+ nudb::erase_file(fil, ec);
88
+
89
+ return ec2obj(new nudb::error_code(ec));
90
+ }
91
+
92
+ VALUE rudb_make_salt(VALUE _self) {
93
+ return INT2NUM(nudb::make_salt());
94
+ }
95
+
96
+ VALUE rudb_block_size(VALUE _self, VALUE _path) {
97
+ Check_Type(_path, T_STRING);
98
+ std::string path = std::string((char*)RSTRING_PTR(_path), RSTRING_LEN(_path));
99
+ return INT2NUM(nudb::block_size(path));
100
+ }
101
+
102
+ ///
103
+
104
+ void db_free(nudb_store_pointer* store_pointer){
105
+ if(store_pointer->store != NULL){
106
+ // FIXME nudb::store is polymorphic w/out virtual destructor
107
+ delete store_pointer->store;
108
+ store_pointer->store = NULL;
109
+ }
110
+ delete store_pointer;
111
+ }
112
+
113
+ static VALUE store_alloc(VALUE klass){
114
+ nudb_store_pointer* store_pointer = ALLOC(nudb_store_pointer);
115
+ return Data_Wrap_Struct(klass, 0, db_free, store_pointer);
116
+ }
117
+
118
+ VALUE rudb_store_init(VALUE _self){
119
+ nudb_store_pointer* store_pointer;
120
+ Data_Get_Struct(_self, nudb_store_pointer, store_pointer);
121
+ store_pointer->store = new nudb::store();
122
+ return _self;
123
+ }
124
+
125
+ VALUE rudb_store_open(VALUE _self, VALUE dat_path, VALUE key_path, VALUE log_path) {
126
+ Check_Type(dat_path, T_STRING);
127
+ Check_Type(key_path, T_STRING);
128
+ Check_Type(log_path, T_STRING);
129
+
130
+ nudb_store_pointer* store_pointer;
131
+ Data_Get_Struct(_self, nudb_store_pointer, store_pointer);
132
+
133
+ std::string dat = std::string((char*)RSTRING_PTR(dat_path),
134
+ RSTRING_LEN(dat_path));
135
+ std::string key = std::string((char*)RSTRING_PTR(key_path),
136
+ RSTRING_LEN(key_path));
137
+ std::string log = std::string((char*)RSTRING_PTR(log_path),
138
+ RSTRING_LEN(log_path));
139
+
140
+ nudb::error_code ec;
141
+ store_pointer->store->open(dat, key, log, ec);
142
+
143
+ return ec2obj(new nudb::error_code(ec));
144
+ }
145
+
146
+ VALUE rudb_store_insert(VALUE _self, VALUE key, VALUE value){
147
+ Check_Type(key, T_STRING);
148
+ Check_Type(value, T_STRING);
149
+
150
+ std::string key_str = std::string((char*)RSTRING_PTR(key), RSTRING_LEN(key));
151
+ std::string value_str = std::string((char*)RSTRING_PTR(value), RSTRING_LEN(value));
152
+
153
+ nudb_store_pointer* store_pointer;
154
+ Data_Get_Struct(_self, nudb_store_pointer, store_pointer);
155
+
156
+ if (store_pointer->store == NULL) {
157
+ rb_raise(rb_eRuntimeError, "db not open");
158
+ }
159
+
160
+ nudb::error_code ec;
161
+ store_pointer->store->insert(key_str.c_str(),
162
+ value_str.c_str(),
163
+ value_str.size(), ec);
164
+
165
+ return ec2obj(new nudb::error_code(ec));
166
+ }
167
+
168
+ VALUE rudb_store_fetch(VALUE _self, VALUE key){
169
+ Check_Type(key, T_STRING);
170
+ std::string key_str = std::string((char*)RSTRING_PTR(key), RSTRING_LEN(key));
171
+
172
+ nudb_store_pointer* store_pointer;
173
+ Data_Get_Struct(_self, nudb_store_pointer, store_pointer);
174
+
175
+ if (store_pointer->store == NULL) {
176
+ rb_raise(rb_eRuntimeError, "db not open");
177
+ }
178
+
179
+ std::string result;
180
+ nudb::error_code ec;
181
+ store_pointer->store->fetch(key_str.c_str(),
182
+ [&](void const* buffer, std::size_t size){
183
+ result = std::string((char*) buffer, size);
184
+ }, ec);
185
+
186
+ VALUE result_obj = rb_str_new(result.c_str(),
187
+ result.size());
188
+
189
+ // TODO if block given invoke w/ result_obj (only if succeeded)
190
+
191
+ VALUE ec_obj = ec2obj(new nudb::error_code(ec));
192
+
193
+ VALUE ret = rb_ary_new();
194
+ rb_ary_push(ret, result_obj); // TODO Qnil if not success
195
+ rb_ary_push(ret, ec_obj);
196
+
197
+ return ret;
198
+ }
199
+
200
+ VALUE rudb_store_close(VALUE _self){
201
+ nudb_store_pointer* store_pointer;
202
+ Data_Get_Struct(_self, nudb_store_pointer, store_pointer);
203
+
204
+ nudb::error_code ec;
205
+ store_pointer->store->close(ec);
206
+
207
+ return ec2obj(new nudb::error_code(ec));
208
+ }
209
+
210
+ ///
211
+
212
+ typedef VALUE (*METHOD)(...);
213
+
214
+ extern "C"{
215
+ void Init_rudb(){
216
+ mRuDB = rb_define_module("RuDB");
217
+ rb_define_singleton_method(mRuDB, "create", (METHOD)rudb_create, 1);
218
+ rb_define_singleton_method(mRuDB, "erase_file", (METHOD)rudb_erase_file, 1);
219
+ rb_define_singleton_method(mRuDB, "make_salt", (METHOD)rudb_make_salt, 0);
220
+ rb_define_singleton_method(mRuDB, "block_size", (METHOD)rudb_block_size, 1);
221
+
222
+ cRuDB_store = rb_define_class_under(mRuDB, "Store", rb_cObject);
223
+ rb_define_alloc_func(cRuDB_store, store_alloc);
224
+ rb_define_method(cRuDB_store, "initialize", (METHOD)rudb_store_init, 0);
225
+ rb_define_method(cRuDB_store, "open", (METHOD)rudb_store_open, 3);
226
+ rb_define_method(cRuDB_store, "insert", (METHOD)rudb_store_insert, 2);
227
+ rb_define_method(cRuDB_store, "fetch", (METHOD)rudb_store_fetch, 1);
228
+ rb_define_method(cRuDB_store, "close", (METHOD)rudb_store_close, 0);
229
+
230
+ cRuDB_ec = rb_define_class_under(mRuDB, "ErrorCode", rb_cObject);
231
+ rb_define_method(cRuDB_ec, "value", (METHOD)rudb_ec_value, 0);
232
+ rb_define_method(cRuDB_ec, "message", (METHOD)rudb_ec_message, 0);
233
+ }
234
+ }
@@ -0,0 +1,3 @@
1
+ module RuDB
2
+ VERSION = '0.0.2'
3
+ end # module RuDB
data/lib/rudb.rb ADDED
@@ -0,0 +1 @@
1
+ require 'rudb.so'
metadata ADDED
@@ -0,0 +1,104 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rrudb
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Dev Null Productions
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-05-14 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Ruby NuDB Wrapper
14
+ email:
15
+ - devnullproductions@gmail.com
16
+ executables: []
17
+ extensions:
18
+ - ext/rudb/extconf.rb
19
+ extra_rdoc_files: []
20
+ files:
21
+ - ".yardopts"
22
+ - LICENSE.txt
23
+ - README.md
24
+ - examples/example.rb
25
+ - ext/rudb/NuDB/include/nudb/CMakeLists.txt
26
+ - ext/rudb/NuDB/include/nudb/_experimental/basic_seconds_clock.hpp
27
+ - ext/rudb/NuDB/include/nudb/_experimental/chrono_util.hpp
28
+ - ext/rudb/NuDB/include/nudb/_experimental/test/fail_file.hpp
29
+ - ext/rudb/NuDB/include/nudb/_experimental/test/temp_dir.hpp
30
+ - ext/rudb/NuDB/include/nudb/_experimental/test/test_store.hpp
31
+ - ext/rudb/NuDB/include/nudb/_experimental/test/xor_shift_engine.hpp
32
+ - ext/rudb/NuDB/include/nudb/_experimental/util.hpp
33
+ - ext/rudb/NuDB/include/nudb/basic_store.hpp
34
+ - ext/rudb/NuDB/include/nudb/concepts.hpp
35
+ - ext/rudb/NuDB/include/nudb/context.hpp
36
+ - ext/rudb/NuDB/include/nudb/create.hpp
37
+ - ext/rudb/NuDB/include/nudb/detail/arena.hpp
38
+ - ext/rudb/NuDB/include/nudb/detail/bucket.hpp
39
+ - ext/rudb/NuDB/include/nudb/detail/buffer.hpp
40
+ - ext/rudb/NuDB/include/nudb/detail/bulkio.hpp
41
+ - ext/rudb/NuDB/include/nudb/detail/cache.hpp
42
+ - ext/rudb/NuDB/include/nudb/detail/endian.hpp
43
+ - ext/rudb/NuDB/include/nudb/detail/field.hpp
44
+ - ext/rudb/NuDB/include/nudb/detail/format.hpp
45
+ - ext/rudb/NuDB/include/nudb/detail/gentex.hpp
46
+ - ext/rudb/NuDB/include/nudb/detail/mutex.hpp
47
+ - ext/rudb/NuDB/include/nudb/detail/pool.hpp
48
+ - ext/rudb/NuDB/include/nudb/detail/store_base.hpp
49
+ - ext/rudb/NuDB/include/nudb/detail/stream.hpp
50
+ - ext/rudb/NuDB/include/nudb/detail/xxhash.hpp
51
+ - ext/rudb/NuDB/include/nudb/error.hpp
52
+ - ext/rudb/NuDB/include/nudb/file.hpp
53
+ - ext/rudb/NuDB/include/nudb/impl/basic_store.ipp
54
+ - ext/rudb/NuDB/include/nudb/impl/context.ipp
55
+ - ext/rudb/NuDB/include/nudb/impl/create.ipp
56
+ - ext/rudb/NuDB/include/nudb/impl/error.ipp
57
+ - ext/rudb/NuDB/include/nudb/impl/posix_file.ipp
58
+ - ext/rudb/NuDB/include/nudb/impl/recover.ipp
59
+ - ext/rudb/NuDB/include/nudb/impl/rekey.ipp
60
+ - ext/rudb/NuDB/include/nudb/impl/verify.ipp
61
+ - ext/rudb/NuDB/include/nudb/impl/visit.ipp
62
+ - ext/rudb/NuDB/include/nudb/impl/win32_file.ipp
63
+ - ext/rudb/NuDB/include/nudb/native_file.hpp
64
+ - ext/rudb/NuDB/include/nudb/nudb.hpp
65
+ - ext/rudb/NuDB/include/nudb/posix_file.hpp
66
+ - ext/rudb/NuDB/include/nudb/progress.hpp
67
+ - ext/rudb/NuDB/include/nudb/recover.hpp
68
+ - ext/rudb/NuDB/include/nudb/rekey.hpp
69
+ - ext/rudb/NuDB/include/nudb/store.hpp
70
+ - ext/rudb/NuDB/include/nudb/type_traits.hpp
71
+ - ext/rudb/NuDB/include/nudb/verify.hpp
72
+ - ext/rudb/NuDB/include/nudb/version.hpp
73
+ - ext/rudb/NuDB/include/nudb/visit.hpp
74
+ - ext/rudb/NuDB/include/nudb/win32_file.hpp
75
+ - ext/rudb/NuDB/include/nudb/xxhasher.hpp
76
+ - ext/rudb/extconf.rb
77
+ - ext/rudb/rudb.cpp
78
+ - lib/rudb.rb
79
+ - lib/rudb/version.rb
80
+ homepage: https://github.com/DevNullProd/RuDB
81
+ licenses:
82
+ - MIT
83
+ metadata: {}
84
+ post_install_message:
85
+ rdoc_options: []
86
+ require_paths:
87
+ - lib
88
+ required_ruby_version: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
93
+ required_rubygems_version: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ requirements: []
99
+ rubyforge_project:
100
+ rubygems_version: 2.7.6
101
+ signing_key:
102
+ specification_version: 4
103
+ summary: Wrapper around the NuDB fast key/value insert-only database.
104
+ test_files: []