Class: DeepTest::DRbBindAllTCPSocket

Inherits:
DRb::DRbTCPSocket
  • Object
show all
Defined in:
lib/deep_test/extensions/drb_extension.rb

Class Method Summary collapse

Class Method Details

.open_server(uri, config) ⇒ Object

Open a server listening for connections at uri using configuration config.



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/deep_test/extensions/drb_extension.rb', line 17

def self.open_server(uri, config)
  
  DeepTest.logger.debug "drubyall open_server with args: #{uri.inspect} #{config.inspect}"
  
  uri = 'drubyall://:0' unless uri
  host, port, opt = parse_uri(uri)

  if host.size == 0
    host = getservername
  end

  DeepTest.logger.debug("Listening on port #{port}, all addresses.")
 soc = TCPServer.open('0.0.0.0', port)  	    
  port = soc.addr[1] if port == 0
  uri = "druby://#{host}:#{port}"
  self.new(uri, soc, config)
  
rescue Exception => e
  unless DRb::DRbBadURI === e or DRb::DRbBadScheme === e
    DeepTest.logger.debug "drubyall open_server exception: #{e.message}\n#{e.backtrace.join("\n")}"
  end
  raise
end

.parse_uri(uri) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
# File 'lib/deep_test/extensions/drb_extension.rb', line 3

def self.parse_uri(uri)
  if uri =~ /^drubyall:\/\/(.*?):(\d+)(\?(.*))?$/
  	host = $1
  	port = $2.to_i
  	option = $4
  	[host, port, option]
  else
  	raise(DRb::DRbBadScheme, uri) unless uri =~ /^drubyall:/
  	raise(DRb::DRbBadURI, 'can\'t parse uri:' + uri)
	end
end