class Pod4::ConnectionPool::Pool

Public Class Methods

new() click to toggle source
# File lib/pod4/connection_pool.rb, line 17
def initialize
  @items = []
  @mutex = Mutex.new
end

Public Instance Methods

<<(cl) click to toggle source
# File lib/pod4/connection_pool.rb, line 22
def <<(cl)
  @mutex.synchronize do
    @items << PoolItem.new(cl, Thread.current.object_id)
  end
end
_dump() click to toggle source
# File lib/pod4/connection_pool.rb, line 53
def _dump
  @mutex.synchronize do
    @items
  end
end
drop() click to toggle source
# File lib/pod4/connection_pool.rb, line 45
def drop
  @items.delete_if{|x| x.thread_id == Thread.current.object_id }
end
get_current() click to toggle source
# File lib/pod4/connection_pool.rb, line 28
def get_current 
  @items.find{|x| x.thread_id == Thread.current.object_id }
end
get_free() click to toggle source
# File lib/pod4/connection_pool.rb, line 32
def get_free
  @mutex.synchronize do
    pi = @items.find{|x| x.thread_id.nil? }
    pi.thread_id = Thread.current.object_id if pi
    pi
  end
end
release() click to toggle source
# File lib/pod4/connection_pool.rb, line 40
def release
  pi = get_current
  pi.thread_id = nil if pi
end
size() click to toggle source
# File lib/pod4/connection_pool.rb, line 49
def size 
  @items.size
end