Class: DRb::DRbConn
Do not use. This class is for internal use only.
Relationships & Source Files | |
Inherits: | Object |
Defined in: | lib/drb/drb.rb |
Overview
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.
Constant Summary
-
POOL_SIZE =
# File 'lib/drb/drb.rb', line 120516
Class Method Summary
- .new(remote_uri) ⇒ DRbConn constructor
- .open(remote_uri)
Instance Attribute Summary
- #alive? ⇒ Boolean readonly
- #uri readonly
Instance Method Summary
Constructor Details
.new(remote_uri) ⇒ DRbConn
# File 'lib/drb/drb.rb', line 1244
def initialize(remote_uri) # :nodoc: @uri = remote_uri @protocol = DRbProtocol.open(remote_uri, DRb.config) end
Class Method Details
.open(remote_uri)
[ GitHub ]# File 'lib/drb/drb.rb', line 1209
def self.open(remote_uri) # :nodoc: begin conn = nil @mutex.synchronize do #FIXME 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 end conn = self.new(remote_uri) unless conn succ, result = yield(conn) return succ, result ensure if conn if succ @mutex.synchronize do @pool.unshift(conn) @pool.pop.close while @pool.size > POOL_SIZE end else conn.close end end end end
Instance Attribute Details
#alive? ⇒ Boolean
(readonly)
[ GitHub ]
# File 'lib/drb/drb.rb', line 1260
def alive? # :nodoc: return false unless @protocol @protocol.alive? end
#uri (readonly)
[ GitHub ]# File 'lib/drb/drb.rb', line 1248
attr_reader :uri # :nodoc:
Instance Method Details
#close
[ GitHub ]# File 'lib/drb/drb.rb', line 1255
def close # :nodoc: @protocol.close @protocol = nil end
#send_message(ref, msg_id, arg, block)
[ GitHub ]# File 'lib/drb/drb.rb', line 1250
def (ref, msg_id, arg, block) # :nodoc: @protocol.send_request(ref, msg_id, arg, block) @protocol.recv_reply end