rocksdb-ruby 0.0.3 → 0.0.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bc1e5a783225ab8620f3f704c1bc1a26bf2553e1
4
- data.tar.gz: 160e91cf18f55e4b9e381793433ad8d7ad105133
3
+ metadata.gz: 1657e705f6b3410500f057e41a4dfaf6d7f3ae96
4
+ data.tar.gz: 3f9242836586a4c07914a9fc1db78e5ddff7bb75
5
5
  SHA512:
6
- metadata.gz: 13df5b7e0bed1234d6a0a7f603ff02b9f2a971137ffb2d21f4b440571668de43f6615301722a32a0153d1c8241147f204e561423676e965e3e5c165edb25b966
7
- data.tar.gz: c5b5fb9d7376f5e05c3f45a0c2e401b0f953a5169fb555528d21ade062329cfaca1ac702e0a4c9bd49adf9254d9dc3de5c8cd68fc28d8d24a2dd3b3f4d5d8a28
6
+ metadata.gz: f20b30b358b03df0f9894d9df49a1e9d32ab716716d66121be803323531b7600a92908fef68ade67832b60cb4f956f2ee8d54faa9dac488420330548bc23e6c3
7
+ data.tar.gz: bbb78be94b274135da4626275a1c9053bbc25b989859363bb9ceba329749c395aa0a358fefa3eae83fde6ebf808ae6eca624b111a385bb0498b79d2cf2ae8aaf
@@ -0,0 +1,38 @@
1
+ #include "rocksdb_batch_rb.h"
2
+
3
+ extern "C" {
4
+ #include <ruby.h>
5
+
6
+ VALUE batch_alloc(VALUE klass){
7
+ rocksdb::WriteBatch *batch = ALLOC(rocksdb::WriteBatch);
8
+ batch = new rocksdb::WriteBatch;
9
+ return Data_Wrap_Struct(klass, 0, -1, batch);
10
+ }
11
+
12
+ VALUE rocksdb_write_batch_init(){
13
+ return Qtrue;
14
+ }
15
+ VALUE rocksdb_write_batch_put(VALUE self, VALUE v_key, VALUE v_value){
16
+ Check_Type(v_key, T_STRING);
17
+ Check_Type(v_value, T_STRING);
18
+
19
+ rocksdb::WriteBatch *batch;
20
+ std::string key = std::string((char*)RSTRING_PTR(v_key));
21
+ std::string value = std::string((char*)RSTRING_PTR(v_value));
22
+
23
+ Data_Get_Struct(self, rocksdb::WriteBatch, batch);
24
+ batch->Put(key, value);
25
+ return Qnil;
26
+ }
27
+ VALUE rocksdb_write_batch_delete(VALUE self, VALUE v_key){
28
+ Check_Type(v_key, T_STRING);
29
+
30
+ rocksdb::WriteBatch *batch;
31
+ std::string key = std::string((char*)RSTRING_PTR(v_key));
32
+
33
+ Data_Get_Struct(self, rocksdb::WriteBatch, batch);
34
+ batch->Delete(key);
35
+
36
+ return Qnil;
37
+ }
38
+ }
@@ -0,0 +1,14 @@
1
+ #include "rocksdb/db.h"
2
+ #include "rocksdb/write_batch.h"
3
+
4
+ extern "C" {
5
+
6
+ #include <ruby.h>
7
+
8
+ typedef VALUE (*METHOD)(...);
9
+
10
+ VALUE rocksdb_write_batch_init();
11
+ VALUE batch_alloc(VALUE klass);
12
+ VALUE rocksdb_write_batch_put(VALUE self, VALUE v_key, VALUE v_value);
13
+ VALUE rocksdb_write_batch_delete(VALUE self, VALUE v_key);
14
+ }
@@ -0,0 +1,120 @@
1
+ #include "rocksdb_db_rb.h"
2
+
3
+ extern "C" {
4
+ #include <ruby.h>
5
+
6
+ VALUE rocksdb_db_init(int argc, VALUE* argv, VALUE self) {
7
+ VALUE v_db_file_name;
8
+ rocksdb_pointer* db_pointer;
9
+ rocksdb::DB* db;
10
+
11
+ Data_Get_Struct(self, rocksdb_pointer, db_pointer);
12
+ rb_scan_args(argc, argv, "01", &v_db_file_name);
13
+ Check_Type(v_db_file_name, T_STRING);
14
+ std::string db_file_name = std::string((char*)RSTRING_PTR(v_db_file_name));
15
+
16
+ rocksdb::Options options;
17
+ options.create_if_missing = true;
18
+ rocksdb::Status status = rocksdb::DB::Open(options, db_file_name, &db);
19
+
20
+ db_pointer->db = db;
21
+
22
+ return status.ok() ? Qtrue : Qfalse;
23
+ }
24
+
25
+ VALUE db_alloc(VALUE klass){
26
+ rocksdb_pointer* db_pointer = ALLOC(rocksdb_pointer);
27
+ return Data_Wrap_Struct(klass, 0, -1, db_pointer);
28
+ }
29
+
30
+ VALUE rocksdb_db_put(VALUE self, VALUE v_key, VALUE v_value) {
31
+ Check_Type(v_key, T_STRING);
32
+ Check_Type(v_value, T_STRING);
33
+
34
+ rocksdb_pointer* db_pointer;
35
+ rocksdb::DB* db;
36
+ Data_Get_Struct(self, rocksdb_pointer, db_pointer);
37
+
38
+ std::string key = std::string((char*)RSTRING_PTR(v_key));
39
+ std::string value = std::string((char*)RSTRING_PTR(v_value));
40
+
41
+ rocksdb::Status status = db_pointer->db->Put(rocksdb::WriteOptions(), key, value);
42
+
43
+ return status.ok() ? Qtrue : Qfalse;
44
+ }
45
+
46
+ VALUE rocksdb_db_write(VALUE self, VALUE v_write){
47
+ rocksdb_pointer* db_pointer;
48
+ rocksdb::DB* db;
49
+ Data_Get_Struct(self, rocksdb_pointer, db_pointer);
50
+
51
+ rocksdb::WriteBatch *batch;
52
+ Data_Get_Struct(v_write, rocksdb::WriteBatch, batch);
53
+
54
+ rocksdb::Status status = db_pointer->db->Write(rocksdb::WriteOptions(), batch);
55
+ return status.ok() ? Qtrue : Qfalse;
56
+ }
57
+
58
+ VALUE rocksdb_db_get(VALUE self, VALUE v_key){
59
+ Check_Type(v_key, T_STRING);
60
+
61
+ rocksdb_pointer* db_pointer;
62
+ rocksdb::DB* db;
63
+ Data_Get_Struct(self, rocksdb_pointer, db_pointer);
64
+
65
+ std::string key = std::string((char*)RSTRING_PTR(v_key));
66
+ std::string value;
67
+ db_pointer->db->Get(rocksdb::ReadOptions(), key, &value);
68
+
69
+ return rb_str_new(value.data(), value.size());
70
+ }
71
+
72
+
73
+ VALUE rocksdb_db_multi_get(VALUE self, VALUE v_array){
74
+ Check_Type(v_array, T_ARRAY);
75
+
76
+ rocksdb_pointer* db_pointer;
77
+ rocksdb::DB* db;
78
+ Data_Get_Struct(self, rocksdb_pointer, db_pointer);
79
+
80
+ long i;
81
+ VALUE *tmp = RARRAY_PTR(v_array);
82
+ long length = RARRAY_LEN(v_array);
83
+ std::vector<std::string> values(length);
84
+ std::vector<rocksdb::Slice> keys(length);
85
+ std::vector<rocksdb::Status> status;
86
+
87
+ for(i=0; i < length; i++){
88
+ keys[i] = rocksdb::Slice((char*)RSTRING_PTR(*tmp));
89
+ tmp++;
90
+ }
91
+
92
+ status = db_pointer->db->MultiGet(rocksdb::ReadOptions(),keys,&values);
93
+ for(i=0; i < length; i++){
94
+ RARRAY_PTR(v_array)[i] = rb_str_new(values[i].data(), values[i].size());
95
+ }
96
+ return v_array;
97
+ }
98
+
99
+ VALUE rocksdb_db_delete(VALUE self, VALUE v_key){
100
+ Check_Type(v_key, T_STRING);
101
+
102
+ rocksdb_pointer* db_pointer;
103
+ rocksdb::DB* db;
104
+ Data_Get_Struct(self, rocksdb_pointer, db_pointer);
105
+
106
+ std::string key = std::string((char*)RSTRING_PTR(v_key));
107
+ rocksdb::Status status = db_pointer->db->Delete(rocksdb::WriteOptions(), key);
108
+
109
+ return status.ok() ? Qtrue : Qfalse;
110
+ }
111
+
112
+ VALUE rocksdb_db_close(VALUE self){
113
+ rocksdb_pointer* db_pointer;
114
+ rocksdb::DB* db;
115
+ Data_Get_Struct(self, rocksdb_pointer, db_pointer);
116
+
117
+ delete db_pointer->db;
118
+ return Qnil;
119
+ }
120
+ }
@@ -0,0 +1,19 @@
1
+ #include "rocksdb/db.h"
2
+ #include "rocksdb/write_batch.h"
3
+
4
+ extern "C" {
5
+ #include <ruby.h>
6
+ struct rocksdb_pointer{
7
+ rocksdb::DB* db;
8
+ };
9
+
10
+ VALUE rocksdb_db_init(int argc, VALUE* argv, VALUE self);
11
+ VALUE db_alloc(VALUE klass);
12
+ VALUE rocksdb_db_put(VALUE self, VALUE v_key, VALUE v_value);
13
+ VALUE rocksdb_db_write(VALUE self, VALUE v_write);
14
+ VALUE rocksdb_db_get(VALUE self, VALUE v_key);
15
+ VALUE rocksdb_db_multi_get(VALUE self, VALUE v_array);
16
+ VALUE rocksdb_db_delete(VALUE self, VALUE v_key);
17
+ VALUE rocksdb_db_close(VALUE self);
18
+
19
+ }
@@ -1,29 +1,8 @@
1
- #include "rocksdb/db.h"
2
- #include "rocksdb/write_batch.h"
3
- #include <iostream>
1
+ #include "rocksdb_rb.h"
2
+ #include "rocksdb_db_rb.h"
3
+ #include "rocksdb_batch_rb.h"
4
4
 
5
5
  extern "C" {
6
-
7
- #include <stdio.h>
8
- #include <ruby.h>
9
-
10
- typedef VALUE (*METHOD)(...);
11
-
12
- VALUE rocksdb_db_init(int argc, VALUE* argv, VALUE self);
13
- VALUE rocksdb_db_put(VALUE self, VALUE v_key, VALUE v_value);
14
- VALUE rocksdb_db_write(VALUE self, VALUE v_write);
15
- VALUE rocksdb_db_get(VALUE self, VALUE v_key);
16
- VALUE rocksdb_db_multi_get(VALUE self, VALUE v_array);
17
- VALUE rocksdb_db_delete(VALUE self, VALUE v_key);
18
- VALUE rocksdb_db_close();
19
-
20
- VALUE rocksdb_write_batch_init();
21
- VALUE batch_alloc(VALUE klass);
22
- VALUE rocksdb_write_batch_put(VALUE self, VALUE v_key, VALUE v_value);
23
- VALUE rocksdb_write_batch_delete(VALUE self, VALUE v_key);
24
-
25
- rocksdb::DB* db;
26
-
27
6
  void Init_RocksDB(){
28
7
 
29
8
  VALUE cRocksdb;
@@ -32,6 +11,7 @@ extern "C" {
32
11
 
33
12
  cRocksdb = rb_define_class("RocksDB", rb_cObject);
34
13
  cRocksdb_db = rb_define_class_under(cRocksdb, "DB", rb_cObject);
14
+ rb_define_alloc_func(cRocksdb_db, db_alloc);
35
15
 
36
16
  rb_define_private_method(cRocksdb_db, "initialize", (METHOD)rocksdb_db_init, -1);
37
17
  rb_define_method(cRocksdb_db, "put", (METHOD)rocksdb_db_put, 2);
@@ -47,119 +27,4 @@ extern "C" {
47
27
  rb_define_method(cRocksdb_write_batch, "put", (METHOD)rocksdb_write_batch_put, 2);
48
28
  rb_define_method(cRocksdb_write_batch, "delete", (METHOD)rocksdb_write_batch_delete, 1);
49
29
  }
50
-
51
- VALUE rocksdb_db_init(int argc, VALUE* argv, VALUE self) {
52
- VALUE v_db_file_name;
53
-
54
- rb_scan_args(argc, argv, "01", &v_db_file_name);
55
- Check_Type(v_db_file_name, T_STRING);
56
- std::string db_file_name = std::string((char*)RSTRING_PTR(v_db_file_name));
57
-
58
- rocksdb::Options options;
59
- options.create_if_missing = true;
60
- rocksdb::Status status = rocksdb::DB::Open(options, db_file_name, &db);
61
-
62
- return status.ok() ? Qtrue : Qfalse;
63
- }
64
-
65
- VALUE rocksdb_db_put(VALUE self, VALUE v_key, VALUE v_value) {
66
- Check_Type(v_key, T_STRING);
67
- Check_Type(v_value, T_STRING);
68
-
69
- std::string key = std::string((char*)RSTRING_PTR(v_key));
70
- std::string value = std::string((char*)RSTRING_PTR(v_value));
71
-
72
- rocksdb::Status status = db->Put(rocksdb::WriteOptions(), key, value);
73
-
74
- return status.ok() ? Qtrue : Qfalse;
75
- }
76
-
77
- VALUE rocksdb_db_write(VALUE self, VALUE v_write){
78
- rocksdb::WriteBatch *batch;
79
- Data_Get_Struct(v_write, rocksdb::WriteBatch, batch);
80
-
81
- rocksdb::Status status = db->Write(rocksdb::WriteOptions(), batch);
82
- return status.ok() ? Qtrue : Qfalse;
83
- }
84
-
85
- VALUE rocksdb_db_get(VALUE self, VALUE v_key){
86
- Check_Type(v_key, T_STRING);
87
-
88
- std::string key = std::string((char*)RSTRING_PTR(v_key));
89
- std::string value;
90
- db->Get(rocksdb::ReadOptions(), key, &value);
91
-
92
- return rb_str_new(value.data(), value.size());
93
- }
94
-
95
-
96
- VALUE rocksdb_db_multi_get(VALUE self, VALUE v_array){
97
- Check_Type(v_array, T_ARRAY);
98
-
99
- long i;
100
- VALUE *tmp = RARRAY_PTR(v_array);
101
- long length = RARRAY_LEN(v_array);
102
- std::vector<std::string> values(length);
103
- std::vector<rocksdb::Slice> keys(length);
104
- std::vector<rocksdb::Status> status;
105
-
106
- for(i=0; i < length; i++){
107
- keys[i] = rocksdb::Slice((char*)RSTRING_PTR(*tmp));
108
- tmp++;
109
- }
110
-
111
- status = db->MultiGet(rocksdb::ReadOptions(),keys,&values);
112
- for(i=0; i < length; i++){
113
- RARRAY_PTR(v_array)[i] = rb_str_new(values[i].data(), values[i].size());
114
- }
115
- return v_array;
116
- }
117
-
118
- VALUE rocksdb_db_delete(VALUE self, VALUE v_key){
119
- Check_Type(v_key, T_STRING);
120
-
121
- std::string key = std::string((char*)RSTRING_PTR(v_key));
122
- rocksdb::Status status = db->Delete(rocksdb::WriteOptions(), key);
123
-
124
- return status.ok() ? Qtrue : Qfalse;
125
- }
126
-
127
- VALUE rocksdb_db_close(){
128
- delete db;
129
- return Qnil;
130
- }
131
-
132
- VALUE batch_alloc(VALUE klass){
133
- rocksdb::WriteBatch *batch = ALLOC(rocksdb::WriteBatch);
134
- batch = new rocksdb::WriteBatch;
135
- return Data_Wrap_Struct(klass, 0, -1, batch);
136
- }
137
-
138
- VALUE rocksdb_write_batch_init(){
139
- return Qtrue;
140
- }
141
- VALUE rocksdb_write_batch_put(VALUE self, VALUE v_key, VALUE v_value){
142
- Check_Type(v_key, T_STRING);
143
- Check_Type(v_value, T_STRING);
144
-
145
- rocksdb::WriteBatch *batch;
146
- std::string key = std::string((char*)RSTRING_PTR(v_key));
147
- std::string value = std::string((char*)RSTRING_PTR(v_value));
148
-
149
- Data_Get_Struct(self, rocksdb::WriteBatch, batch);
150
- batch->Put(key, value);
151
- return Qnil;
152
- }
153
- VALUE rocksdb_write_batch_delete(VALUE self, VALUE v_key){
154
- Check_Type(v_key, T_STRING);
155
-
156
- rocksdb::WriteBatch *batch;
157
- std::string key = std::string((char*)RSTRING_PTR(v_key));
158
-
159
- Data_Get_Struct(self, rocksdb::WriteBatch, batch);
160
- batch->Delete(key);
161
-
162
- return Qnil;
163
- }
164
-
165
30
  }
@@ -0,0 +1,10 @@
1
+ #include "rocksdb/db.h"
2
+ #include "rocksdb/write_batch.h"
3
+
4
+ extern "C" {
5
+
6
+ #include <ruby.h>
7
+
8
+ typedef VALUE (*METHOD)(...);
9
+
10
+ }
@@ -1,5 +1,5 @@
1
1
  module Rocksdb
2
2
  module Ruby
3
- VERSION = "0.0.3"
3
+ VERSION = "0.0.4"
4
4
  end
5
5
  end
data/spec/db_spec.rb CHANGED
@@ -48,9 +48,23 @@ describe RocksDB do
48
48
  @rocksdb.get("test:batch2").should eq "b"
49
49
  end
50
50
 
51
+ it 'should use multiple db' do
52
+ @rocksdb2 = RocksDB::DB.new "/tmp/file2"
53
+
54
+ @rocksdb.put("test:multi_db", "1")
55
+ @rocksdb2.put("test:multi_db", "2")
56
+
57
+ @rocksdb.get("test:multi_db").should eq "1"
58
+ @rocksdb2.get("test:multi_db").should eq "2"
59
+ end
60
+
61
+
51
62
  after do
52
63
  @rocksdb.close
53
64
  end
54
65
 
66
+ #rocksdb::WriteOptions write_options;
67
+ #write_options.sync = true;
68
+
55
69
  end
56
70
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rocksdb-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Isamu Arimoto
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-27 00:00:00.000000000 Z
11
+ date: 2013-11-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -65,13 +65,18 @@ files:
65
65
  - LICENSE.txt
66
66
  - README.md
67
67
  - Rakefile
68
- - ext/rocksdb/extconf.rb
68
+ - ext/rocksdb/rocksdb_batch_rb.cc
69
+ - ext/rocksdb/rocksdb_batch_rb.h
70
+ - ext/rocksdb/rocksdb_db_rb.cc
71
+ - ext/rocksdb/rocksdb_db_rb.h
69
72
  - ext/rocksdb/rocksdb_rb.cc
73
+ - ext/rocksdb/rocksdb_rb.h
70
74
  - lib/rocksdb/ruby.rb
71
75
  - lib/rocksdb/ruby/version.rb
72
76
  - rocksdb-ruby.gemspec
73
77
  - spec/db_spec.rb
74
78
  - spec/spec_helper.rb
79
+ - ext/rocksdb/extconf.rb
75
80
  homepage: https://github.com/isamu/rocksdb-ruby
76
81
  licenses:
77
82
  - mit