Class: Async::Sequel::ConnectionPool::Fibered
- Inherits:
-
Sequel::ConnectionPool
- Object
- Sequel::ConnectionPool
- Async::Sequel::ConnectionPool::Fibered
- Defined in:
- lib/async/sequel/connection_pool/fibered.rb
Instance Attribute Summary collapse
-
#resources ⇒ Object
readonly
Returns the value of attribute resources.
Instance Method Summary collapse
- #acquire ⇒ Object
- #close ⇒ Object
- #disconnect(server = nil) ⇒ Object
- #empty? ⇒ Boolean
- #hold(server = nil, &block) ⇒ Object
-
#initialize(database, limit: nil, **options) ⇒ Fibered
constructor
A new instance of Fibered.
- #max_size ⇒ Object
-
#release(resource) ⇒ Object
Make the resource resources and let waiting tasks know that there is something resources.
- #servers ⇒ Object
- #size ⇒ Object
- #to_s ⇒ Object
Constructor Details
#initialize(database, limit: nil, **options) ⇒ Fibered
Returns a new instance of Fibered.
31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/async/sequel/connection_pool/fibered.rb', line 31 def initialize(database, limit: nil, **) super(database, **) @database = database @options = @resources = [] @available = Async::Notification.new @limit = limit @active = 0 end |
Instance Attribute Details
#resources ⇒ Object (readonly)
Returns the value of attribute resources.
44 45 46 |
# File 'lib/async/sequel/connection_pool/fibered.rb', line 44 def resources @resources end |
Instance Method Details
#acquire ⇒ Object
70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/async/sequel/connection_pool/fibered.rb', line 70 def acquire resource = wait_for_resource return resource unless block_given? begin yield resource ensure release(resource) end end |
#close ⇒ Object
92 93 94 95 96 97 |
# File 'lib/async/sequel/connection_pool/fibered.rb', line 92 def close @resources.each(&:close) @resources.clear @active = 0 end |
#disconnect(server = nil) ⇒ Object
50 51 52 |
# File 'lib/async/sequel/connection_pool/fibered.rb', line 50 def disconnect(server = nil) self.close end |
#empty? ⇒ Boolean
66 67 68 |
# File 'lib/async/sequel/connection_pool/fibered.rb', line 66 def empty? @resources.empty? end |
#hold(server = nil, &block) ⇒ Object
46 47 48 |
# File 'lib/async/sequel/connection_pool/fibered.rb', line 46 def hold(server = nil, &block) acquire(&block) end |
#max_size ⇒ Object
62 63 64 |
# File 'lib/async/sequel/connection_pool/fibered.rb', line 62 def max_size @limit end |
#release(resource) ⇒ Object
Make the resource resources and let waiting tasks know that there is something resources.
83 84 85 86 87 88 89 90 |
# File 'lib/async/sequel/connection_pool/fibered.rb', line 83 def release(resource) # A resource that is not good should also not be reusable. # unless resource.closed? reuse(resource) # else # retire(resource) # end end |
#servers ⇒ Object
54 55 56 |
# File 'lib/async/sequel/connection_pool/fibered.rb', line 54 def servers [:default] end |
#size ⇒ Object
58 59 60 |
# File 'lib/async/sequel/connection_pool/fibered.rb', line 58 def size @active end |
#to_s ⇒ Object
99 100 101 |
# File 'lib/async/sequel/connection_pool/fibered.rb', line 99 def to_s "\#<#{self.class} resources=#{resources.size} limit=#{@limit}>" end |