roma-storage 0.1.1 → 0.2.0

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
  SHA256:
3
- metadata.gz: be339014d3d6302df9c114eafa0af8133d36630c91b0874235a1eac6765852ed
4
- data.tar.gz: b48b3c583ec0753f520a68ba9a6f4c59b820407165780da794384ad8fce742c3
3
+ metadata.gz: 7c31aa7cc18149d6d2a51e416510910f8933d7d1c9b1e92cbe104baa6bc9f184
4
+ data.tar.gz: 6cf7dbbb472c7f33c2ce255fea9614785af25943774f2fcdbf4b4aed191dc3cf
5
5
  SHA512:
6
- metadata.gz: 1578b1b4984728252fde8eef667effce9628974d435e87099a79e677afd510c6ed503c81f64ed231191c872a193500d2f1c32acacef71735b57ed222ebd74180
7
- data.tar.gz: f38620ebcad74bef70808c81864749018b63704c4cd5ecfaba3a1b5b32dcfdbebf38ad31213de6e21430a3b170b578584b6508a4330b983324d4c0f56b5a59e6
6
+ metadata.gz: b50736e004324c4c4bd3f351d2e6f4fdeabfae3710dbe6d1626b8ca6b0ddc3beb279ee7555957b7da87c6ae2436d910d1079ecfb46778de6b6156b07f5abd6bd
7
+ data.tar.gz: 5a65bcde0d87fb4053e55a9e6e8e07a1e8242c4a1d1b1e3093d271a14eb9151bb444890c1119c614d1bcda854bad5bb541547f79796d37e199bdf4af21a7786e
@@ -0,0 +1,114 @@
1
+ require 'roma/storage/basic_storage'
2
+
3
+ module Roma
4
+ module Storage
5
+
6
+ module RH_Ext
7
+ def put(k,v); self[k] = v; end
8
+ def get(k); self[k]; end
9
+ def out(k); delete(k); end
10
+ def rnum; length; end
11
+ def sync; true; end
12
+ end
13
+
14
+ class HashStorage < BasicStorage
15
+
16
+ def opendb
17
+ create_div_hash
18
+ @divnum.times do |i|
19
+ @hdb[i] = open_db(nil)
20
+ @hdbc[i] = nil
21
+ @dbs[i] = :normal
22
+ end
23
+ end
24
+
25
+ if RUBY_VERSION >= '1.9.2'
26
+ def each_clean_up(t, vnhash)
27
+ @do_clean_up = true
28
+ nt = Time.now.to_i
29
+ @hdb.each{ |hdb|
30
+ keys = hdb.keys
31
+ keys.each{ |k|
32
+ v = hdb[k]
33
+ return unless @do_clean_up
34
+ vn, last, _clk, expt = unpack_header(v)
35
+ vn_stat = vnhash[vn]
36
+ if vn_stat == :primary && ( (expt != 0 && nt > expt) || (expt == 0 && t > last) )
37
+ yield k, vn
38
+ hdb.out(k) if hdb.get(k) == v
39
+ elsif vn_stat == nil && t > last
40
+ yield k, vn
41
+ hdb.out(k) if hdb.get(k) == v
42
+ end
43
+ sleep @each_clean_up_sleep
44
+ }
45
+ }
46
+ end
47
+
48
+ def each_unpacked_db(target_vn, db)
49
+ count = 0
50
+ tn = Time.now.to_i
51
+ keys = db[@hdiv[target_vn]].keys
52
+ keys.each do |k|
53
+ v = db[@hdiv[target_vn]][k]
54
+ vn, last, clk, expt, val = unpack_data(v)
55
+ if vn != target_vn || (expt != 0 && tn > expt)
56
+ count += 1
57
+ sleep @each_vn_dump_sleep if count % @each_vn_dump_sleep_count == 0
58
+ next
59
+ end
60
+ yield vn, last, clk, expt, k, val
61
+ end
62
+ end
63
+ private :each_unpacked_db
64
+
65
+
66
+ def each_hdb_dump(i,except_vnh = nil)
67
+ count = 0
68
+ keys = @hdb[i].keys
69
+ keys.each{|k|
70
+ v = @hdb[i][k]
71
+ vn, last, clk, expt, val = unpack_data(v)
72
+ if except_vnh && except_vnh.key?(vn) || Time.now.to_i > expt
73
+ count += 1
74
+ sleep @each_vn_dump_sleep if count % @each_vn_dump_sleep_count == 0
75
+ else
76
+ yield [vn, last, clk, expt, k.length, k, val.length, val].pack("NNNNNa#{k.length}Na#{val.length}")
77
+ sleep @each_vn_dump_sleep
78
+ end
79
+ }
80
+ end
81
+
82
+ # Create vnode dump.
83
+ def get_vnode_hash(vn)
84
+ buf = {}
85
+ count = 0
86
+ hdb = @hdb[@hdiv[vn]]
87
+ keys = hdb.keys
88
+ keys.each{ |k|
89
+ v = hdb[k]
90
+ count += 1
91
+ sleep @each_vn_dump_sleep if count % @each_vn_dump_sleep_count == 0
92
+ dat = unpack_data(v) #v.unpack('NNNN')
93
+ buf[k] = v if dat[0] == vn
94
+ }
95
+ return buf
96
+ end
97
+ private :get_vnode_hash
98
+
99
+ end
100
+
101
+ private
102
+
103
+ def open_db(fname)
104
+ hdb = {}
105
+ hdb.extend(Roma::Storage::RH_Ext)
106
+ return hdb
107
+ end
108
+
109
+ def close_db(hdb); end
110
+
111
+ end # class HashStorage
112
+
113
+ end # module Storage
114
+ end # module Roma
@@ -1,114 +1,9 @@
1
- require 'roma/storage/basic_storage'
1
+ # Deprecated: require 'roma/storage/hash' and use Roma::Storage::HashStorage.
2
+ require 'roma/storage/hash'
2
3
 
3
4
  module Roma
4
5
  module Storage
5
-
6
- module RH_Ext
7
- def put(k,v); self[k] = v; end
8
- def get(k); self[k]; end
9
- def out(k); delete(k); end
10
- def rnum; length; end
11
- def sync; true; end
12
- end
13
-
14
- class RubyHashStorage < BasicStorage
15
-
16
- def opendb
17
- create_div_hash
18
- @divnum.times do |i|
19
- @hdb[i] = open_db(nil)
20
- @hdbc[i] = nil
21
- @dbs[i] = :normal
22
- end
23
- end
24
-
25
- if RUBY_VERSION >= '1.9.2'
26
- def each_clean_up(t, vnhash)
27
- @do_clean_up = true
28
- nt = Time.now.to_i
29
- @hdb.each{ |hdb|
30
- keys = hdb.keys
31
- keys.each{ |k|
32
- v = hdb[k]
33
- return unless @do_clean_up
34
- vn, last, _clk, expt = unpack_header(v)
35
- vn_stat = vnhash[vn]
36
- if vn_stat == :primary && ( (expt != 0 && nt > expt) || (expt == 0 && t > last) )
37
- yield k, vn
38
- hdb.out(k) if hdb.get(k) == v
39
- elsif vn_stat == nil && t > last
40
- yield k, vn
41
- hdb.out(k) if hdb.get(k) == v
42
- end
43
- sleep @each_clean_up_sleep
44
- }
45
- }
46
- end
47
-
48
- def each_unpacked_db(target_vn, db)
49
- count = 0
50
- tn = Time.now.to_i
51
- keys = db[@hdiv[target_vn]].keys
52
- keys.each do |k|
53
- v = db[@hdiv[target_vn]][k]
54
- vn, last, clk, expt, val = unpack_data(v)
55
- if vn != target_vn || (expt != 0 && tn > expt)
56
- count += 1
57
- sleep @each_vn_dump_sleep if count % @each_vn_dump_sleep_count == 0
58
- next
59
- end
60
- yield vn, last, clk, expt, k, val
61
- end
62
- end
63
- private :each_unpacked_db
64
-
65
-
66
- def each_hdb_dump(i,except_vnh = nil)
67
- count = 0
68
- keys = @hdb[i].keys
69
- keys.each{|k|
70
- v = @hdb[i][k]
71
- vn, last, clk, expt, val = unpack_data(v)
72
- if except_vnh && except_vnh.key?(vn) || Time.now.to_i > expt
73
- count += 1
74
- sleep @each_vn_dump_sleep if count % @each_vn_dump_sleep_count == 0
75
- else
76
- yield [vn, last, clk, expt, k.length, k, val.length, val].pack("NNNNNa#{k.length}Na#{val.length}")
77
- sleep @each_vn_dump_sleep
78
- end
79
- }
80
- end
81
-
82
- # Create vnode dump.
83
- def get_vnode_hash(vn)
84
- buf = {}
85
- count = 0
86
- hdb = @hdb[@hdiv[vn]]
87
- keys = hdb.keys
88
- keys.each{ |k|
89
- v = hdb[k]
90
- count += 1
91
- sleep @each_vn_dump_sleep if count % @each_vn_dump_sleep_count == 0
92
- dat = unpack_data(v) #v.unpack('NNNN')
93
- buf[k] = v if dat[0] == vn
94
- }
95
- return buf
96
- end
97
- private :get_vnode_hash
98
-
99
- end
100
-
101
- private
102
-
103
- def open_db(fname)
104
- hdb = {}
105
- hdb.extend(Roma::Storage::RH_Ext)
106
- return hdb
107
- end
108
-
109
- def close_db(hdb); end
110
-
111
- end # class RubyHashStorage
112
-
113
- end # module Storage
114
- end # module Roma
6
+ RubyHashStorage = HashStorage
7
+ deprecate_constant :RubyHashStorage
8
+ end
9
+ end
@@ -1,5 +1,5 @@
1
1
  module Roma
2
2
  module Storage
3
- VERSION = "0.1.1"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
data/lib/roma/storage.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  require 'roma/storage/version'
2
2
  require 'roma/storage/basic_storage'
3
- require 'roma/storage/dbm_storage'
4
3
  require 'roma/storage/dummy_storage'
5
- require 'roma/storage/ruby_hash_storage'
4
+ require 'roma/storage/hash'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: roma-storage
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tatsuya Sato
@@ -66,6 +66,7 @@ files:
66
66
  - lib/roma/storage.rb
67
67
  - lib/roma/storage/basic_storage.rb
68
68
  - lib/roma/storage/dummy_storage.rb
69
+ - lib/roma/storage/hash.rb
69
70
  - lib/roma/storage/ruby_hash_storage.rb
70
71
  - lib/roma/storage/version.rb
71
72
  - roma-storage.gemspec