zeus 0.11.2 → 0.12.0.pre

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Binary file
data/build/zeus-linux-386 CHANGED
Binary file
Binary file
data/lib/zeus.rb CHANGED
@@ -11,8 +11,7 @@ module Zeus
11
11
  end
12
12
 
13
13
  class << self
14
- attr_accessor :plan
15
- attr_accessor :dummy_tty
14
+ attr_accessor :plan, :dummy_tty, :master_socket
16
15
 
17
16
  # this is totally asinine, but readline gets super confused when it's
18
17
  # required at a time when stdin or stdout is not connected to a TTY,
@@ -30,12 +29,18 @@ module Zeus
30
29
  STDOUT.reopen(dummy_tty)
31
30
  end
32
31
 
32
+ def setup_master_socket!
33
+ return master_socket if master_socket
34
+
35
+ fd = ENV['ZEUS_MASTER_FD'].to_i
36
+ self.master_socket = UNIXSocket.for_fd(fd)
37
+ end
38
+
33
39
  def go(identifier=:boot)
34
- setup_dummy_tty!
35
40
  $0 = "zeus slave: #{identifier}"
36
- # okay, so I ahve this FD that I can use to send data to the master.
37
- fd = ENV['ZEUS_MASTER_FD'].to_i
38
- master = UNIXSocket.for_fd(fd)
41
+
42
+ setup_dummy_tty!
43
+ master = setup_master_socket!
39
44
 
40
45
  # I need to give the master a way to talk to me exclusively
41
46
  local, remote = UNIXSocket.pair(Socket::SOCK_STREAM)
@@ -78,17 +83,12 @@ module Zeus
78
83
  remote.close
79
84
  sock.close
80
85
 
81
- begin
82
- pid_and_arguments = local.recv(1024)
83
- pid_and_arguments.chomp!("\0")
84
- # pid_and_arguments.force_encoding("ASCII-8BIT")
85
- File.open("b.log","a"){|f|f.puts "PA#{pid_and_arguments}" }
86
- pid_and_arguments =~ /(.*?):(.*)/
87
- client_pid, arguments = $1.to_i, $2
88
- arguments.chomp!("\0")
89
- rescue => e
90
- File.open("b.log","a"){|f|f.puts e.message ; f.puts e.backtrace}
91
- end
86
+ pid_and_arguments = local.recv(1024)
87
+ pid_and_arguments.chomp!("\0")
88
+ # pid_and_arguments.force_encoding("ASCII-8BIT")
89
+ pid_and_arguments =~ /(.*?):(.*)/
90
+ client_pid, arguments = $1.to_i, $2
91
+ arguments.chomp!("\0")
92
92
 
93
93
  pid = fork {
94
94
  $0 = "zeus command: #{identifier}"
@@ -119,9 +119,7 @@ module Zeus
119
119
  Thread.new {
120
120
  loop {
121
121
  begin
122
- File.open("b.log","a"){|f|f.puts "Checking #{client_pid}"}
123
- x=Process.kill(0, client_pid)
124
- File.open("b.log","a"){|f|f.puts "Checked #{client_pid} and got #{x}"}
122
+ Process.kill(0, client_pid)
125
123
  rescue Errno::ESRCH
126
124
  Process.kill(9, command_pid)
127
125
  end
@@ -134,6 +132,7 @@ module Zeus
134
132
  features.each do |t|
135
133
  begin
136
134
  sock.write "F:#{t}\0"
135
+ sock.flush
137
136
  rescue Errno::ENOBUFS
138
137
  sleep 0.2
139
138
  retry
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zeus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.2
5
- prerelease:
4
+ version: 0.12.0.pre
5
+ prerelease: 7
6
6
  platform: ruby
7
7
  authors:
8
8
  - Burke Libbey
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-20 00:00:00.000000000 Z
12
+ date: 2012-09-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: method_source
@@ -78,9 +78,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
78
78
  required_rubygems_version: !ruby/object:Gem::Requirement
79
79
  none: false
80
80
  requirements:
81
- - - ! '>='
81
+ - - ! '>'
82
82
  - !ruby/object:Gem::Version
83
- version: '0'
83
+ version: 1.3.1
84
84
  requirements: []
85
85
  rubyforge_project:
86
86
  rubygems_version: 1.8.23