类 DRb::DRbConn

处理 DRbObject 与实际对象所在服务器之间的连接。

此类维护一个连接池,以减少每次方法调用启动和关闭连接的开销。

此类由 DRbObject 在内部使用。用户通常不需要直接处理它。

公共类方法

make_pool() 点击切换源代码
# File lib/drb/drb.rb, line 1259
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
stop_pool() 点击切换源代码
# File lib/drb/drb.rb, line 1292
def self.stop_pool
  @pool_proxy&.kill
  @pool_proxy = nil
end