sbdb 0.0.12.1 → 0.0.12.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.
- data/VERSION +1 -1
- data/lib/sbdb/environment.rb +0 -1
- metadata +5 -6
- data/lib/sbdb/weakhash.rb +0 -59
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.12.
|
1
|
+
0.0.12.2
|
data/lib/sbdb/environment.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sbdb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.12.
|
4
|
+
version: 0.0.12.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2011-08-25 00:00:00.000000000Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bdb
|
16
|
-
requirement: &
|
16
|
+
requirement: &70118391183960 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.2.6.5
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70118391183960
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: ref
|
27
|
-
requirement: &
|
27
|
+
requirement: &70118391183280 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,7 +32,7 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70118391183280
|
36
36
|
description: Simple Ruby Berkeley DB wrapper library for bdb.
|
37
37
|
email: Denis.Knauf@gmail.com
|
38
38
|
executables: []
|
@@ -49,7 +49,6 @@ files:
|
|
49
49
|
- lib/sbdb/db.rb
|
50
50
|
- lib/sbdb/environment.rb
|
51
51
|
- lib/sbdb/transaction.rb
|
52
|
-
- lib/sbdb/weakhash.rb
|
53
52
|
- LICENSE
|
54
53
|
homepage: http://github.com/ruby-bdb/sbdb
|
55
54
|
licenses: []
|
data/lib/sbdb/weakhash.rb
DELETED
@@ -1,59 +0,0 @@
|
|
1
|
-
module SBDB
|
2
|
-
# See http://eigenclass.org/hiki/deferred-finalizers-in-Ruby
|
3
|
-
# Not threadsafe.
|
4
|
-
class WeakHash
|
5
|
-
attr_reader :cache
|
6
|
-
def initialize cache = ::Hash.new
|
7
|
-
@cache = cache
|
8
|
-
@key_map = {}
|
9
|
-
@rev_cache = ::Hash.new { |h,k| h[k] = {} }
|
10
|
-
@reclaim_value = lambda do |value_id|
|
11
|
-
if @rev_cache.has_key? value_id
|
12
|
-
@rev_cache[value_id].each_key{ |key| @cache.delete key }
|
13
|
-
@rev_cache.delete value_id
|
14
|
-
end
|
15
|
-
end
|
16
|
-
@reclaim_key = lambda do |key_id|
|
17
|
-
@cache.delete @key_map.delete(key_id) if @key_map.has_key? key_id
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
def []=(key, value)
|
22
|
-
case key
|
23
|
-
when Fixnum, Symbol, true, false
|
24
|
-
key2 = key
|
25
|
-
else
|
26
|
-
key2 = key.dup
|
27
|
-
end
|
28
|
-
@rev_cache[value.object_id][key2] = true
|
29
|
-
@cache[key2] = value.object_id
|
30
|
-
@key_map[key.object_id] = key2
|
31
|
-
|
32
|
-
ObjectSpace.define_finalizer(value, @reclaim_value)
|
33
|
-
ObjectSpace.define_finalizer(key, @reclaim_key)
|
34
|
-
value
|
35
|
-
end
|
36
|
-
|
37
|
-
def [](key)
|
38
|
-
value_id = @cache[key]
|
39
|
-
return ObjectSpace._id2ref(value_id) unless value_id.nil?
|
40
|
-
nil
|
41
|
-
rescue RangeError
|
42
|
-
nil
|
43
|
-
end
|
44
|
-
|
45
|
-
def each(&e)
|
46
|
-
@cache.each do |k, vid|
|
47
|
-
unless vid.nil?
|
48
|
-
obj =
|
49
|
-
begin
|
50
|
-
ObjectSpace._id2ref vid
|
51
|
-
rescue RangeError
|
52
|
-
next
|
53
|
-
end
|
54
|
-
yield k, obj
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|