9
9
class DRbUNIXSocket < DRbTCPSocket
10
10
def self.parse_uri(uri)
11
11
if /^drbunix:(.*?)(\?(.*))?$/ =~ uri
16
raise(DRbBadScheme, uri) unless uri =~ /^drbunix:/
17
raise(DRbBadURI, 'can\'t parse uri:' + uri)
16
raise(DRbBadScheme, uri) unless uri =~ /^drbunix:/
17
raise(DRbBadURI, 'can\'t parse uri:' + uri)
21
21
def self.open(uri, config)
22
filename, option = parse_uri(uri)
22
filename, = parse_uri(uri)
24
24
soc = UNIXSocket.open(filename)
25
25
self.new(uri, soc, config)
28
28
def self.open_server(uri, config)
29
filename, option = parse_uri(uri)
29
filename, = parse_uri(uri)
30
30
if filename.size == 0
32
32
filename = soc.path
33
uri = 'drbunix:' + soc.path
33
uri = 'drbunix:' + soc.path
35
soc = UNIXServer.open(filename)
35
soc = UNIXServer.open(filename)
37
37
owner = config[:UNIXFileOwner]
38
38
group = config[:UNIXFileGroup]
67
67
tmpdir = Dir::tmpdir
71
tmpname = sprintf('%s/druby%d.%d', tmpdir, $$, n)
72
lock = tmpname + '.lock'
73
unless File.exist?(tmpname) or File.exist?(lock)
78
raise "cannot generate tempfile `%s'" % tmpname if n >= Max_try
71
tmpname = sprintf('%s/druby%d.%d', tmpdir, $$, n)
72
lock = tmpname + '.lock'
73
unless File.exist?(tmpname) or File.exist?(lock)
78
raise "cannot generate tempfile `%s'" % tmpname if n >= Max_try
83
83
soc = UNIXServer.new(tmpname)