Class
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.
Constants
No documentation available
Class Methods
::
lib/drb/drb.rb
View on GitHub
# File tmp/rubies/ruby-3.2.0/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
No documentation available
::
lib/drb/drb.rb
View on GitHub
# File tmp/rubies/ruby-3.2.0/lib/drb/drb.rb, line 1291
def self.stop_pool
@pool_proxy&.kill
@pool_proxy = nil
end
No documentation available