class DRb::DRbConn

def self.make_pool

def self.make_pool
  ThreadObject.new do |queue|
    pool = []
    while true
      queue._execute do |message|
        case(message[0])
        when :take then
          remote_uri = message[1]
          conn = nil
          new_pool = []
          pool.each do |c|
            if conn.nil? and c.uri == remote_uri
              conn = c if c.alive?
            else
              new_pool.push c
            end
          end
          pool = new_pool
          conn
        when :store then
          conn = message[1]
          pool.unshift(conn)
          pool.pop.close while pool.size > POOL_SIZE
          conn
        else
          nil
        end
      end
    end
  end
end