rocksdb-ruby 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
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