Class: MessagePack::Factory::Pool::AbstractPool
- Inherits:
-
Object
- Object
- MessagePack::Factory::Pool::AbstractPool
- Defined in:
- lib/msgpack/factory.rb,
lib/msgpack/factory.rb
Direct Known Subclasses
Instance Method Summary collapse
- #checkin(member) ⇒ Object
- #checkout ⇒ Object
-
#initialize(size, &block) ⇒ AbstractPool
constructor
A new instance of AbstractPool.
Constructor Details
#initialize(size, &block) ⇒ AbstractPool
Returns a new instance of AbstractPool.
92 93 94 95 96 |
# File 'lib/msgpack/factory.rb', line 92 def initialize(size, &block) @size = size @new_member = block @members = [] end |
Instance Method Details
#checkin(member) ⇒ Object
102 103 104 105 106 107 108 109 110 111 112 113 114 |
# File 'lib/msgpack/factory.rb', line 102 def checkin(member) # If the pool is already full, we simply drop the extra member. # This is because contrary to a connection pool, creating an extra instance # is extremely unlikely to cause some kind of resource exhaustion. # # We could cycle the members (keep the newer one) but first It's more work and second # the older member might have been created pre-fork, so it might be at least partially # in shared memory. if member && @members.size < @size member.reset @members << member end end |
#checkout ⇒ Object
98 99 100 |
# File 'lib/msgpack/factory.rb', line 98 def checkout @members.pop || @new_member.call end |