Class: Tork::Server
- Inherits:
-
Object
show all
- Defined in:
- lib/tork/server.rb
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize ⇒ Server
Returns a new instance of Server.
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
# File 'lib/tork/server.rb', line 14
def initialize
begin
@welcome = UNIXServer.open(address = Server.address)
at_exit { File.delete address if File.socket? address }
rescue Errno::EADDRINUSE
warn "#{$0}: remotely controlling existing instance..."
exec 'tork-remote', $0, *ARGV
end
@stdout = STDOUT.dup
STDOUT.reopen STDERR
@servers = Set.new.add(@welcome)
@clients = Set.new; join STDIN end
|
Class Method Details
.address(program = $0) ⇒ Object
10
11
12
|
# File 'lib/tork/server.rb', line 10
def self.address program=$0
".#{program}.sock"
end
|
Instance Method Details
#loop ⇒ Object
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
# File 'lib/tork/server.rb', line 35
def loop
catch :quit do
while @clients.include? STDIN
IO.select((@servers + @clients).to_a).first.each do |stream|
if stream == @welcome
join stream.accept
elsif (stream.eof? rescue true)
part stream
elsif @command = hear(stream, stream.gets) and not @command.empty?
recv stream, @command
end
end
end
end
end
|
#quit ⇒ Object
53
54
55
|
# File 'lib/tork/server.rb', line 53
def quit
throw :quit
end
|