innertube 1.0.2 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -16,6 +16,9 @@ licensed under the Apache 2.0 License.
16
16
  pool = Innertube::Pool.new(proc { Connection.new },
17
17
  proc {|c| c.disconnect })
18
18
 
19
+ # Optionally, fill the pool with existing resources
20
+ pool.fill([conn1, conn2, conn3])
21
+
19
22
  # Grab a connection from the pool, returns the same value
20
23
  # as the block
21
24
  pool.take {|conn| conn.ping } # => true
@@ -1,4 +1,5 @@
1
1
  require 'thread'
2
+ require 'set'
2
3
 
3
4
  # Innertube is a re-entrant thread-safe resource pool that was
4
5
  # extracted from the Riak Ruby Client
@@ -61,6 +62,16 @@ module Innertube
61
62
  @pool = Set.new
62
63
  end
63
64
 
65
+ # Populate the pool with existing, open resources.
66
+ # @param [Array] An array of resources.
67
+ def fill(resources)
68
+ @lock.synchronize do
69
+ resources.each do |r|
70
+ @pool << Element.new(r)
71
+ end
72
+ end
73
+ end
74
+
64
75
  # On each element of the pool, calls close(element) and removes it.
65
76
  # @private
66
77
  def clear
@@ -1,3 +1,3 @@
1
1
  module Innertube
2
- VERSION = "1.0.2"
2
+ VERSION = "1.1.0"
3
3
  end
@@ -51,6 +51,20 @@ describe Innertube::Pool do
51
51
  pool_members.map { |e| e.object.first }.sort.should == [1,2,3,4]
52
52
  end
53
53
 
54
+ it 'should be fillable with existing resources' do
55
+ pool.fill(["Apple", "Banana", "Kiwi"])
56
+ pool_members.size.should == 3
57
+
58
+ pool.take do |x|
59
+ x.should eq('Apple')
60
+ pool.take do |y|
61
+ y.should eq('Banana')
62
+ pool.take do |z|
63
+ z.should eq('Kiwi')
64
+ end
65
+ end
66
+ end
67
+ end
54
68
 
55
69
  it 'should unlock when exceptions are raised' do
56
70
  begin
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: innertube
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-07-06 00:00:00.000000000 Z
13
+ date: 2013-07-29 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rspec
@@ -77,3 +77,4 @@ test_files:
77
77
  - spec/support/timeout.rb
78
78
  - spec/support/verbose_formatter.rb
79
79
  - .gitignore
80
+ has_rdoc: