# class DRb::DRbConn

`Class` handling the connection between a `DRbObject` and the server the real object lives on.

This class maintains a pool of connections, to reduce the overhead of starting and closing down connections for each method call.

This class is used internally by `DRbObject`. The user does not normally need to deal with it directly.

### Public Class Methods

make_pool() click to toggle source

    # File lib/drb/drb.rb, line 1258
    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() click to toggle source

    # File lib/drb/drb.rb, line 1291
    def self.stop_pool
      @pool_proxy&.kill
      @pool_proxy = nil
    end