A convenience class for communicating with MessageServer servers, for example the ApplicationPool server.
Connect to the given server. By default it connects to the current generation's helper server.
# File lib/phusion_passenger/message_client.rb, line 38 def initialize(username, password, address = "unix:#{Utils.passenger_tmpdir}/socket") @socket = connect_to_server(address) begin @channel = MessageChannel.new(@socket) result = @channel.read if result.nil? raise EOFError elsif result.size != 2 || result[0] != "version" raise IOError, "The message server didn't sent a valid version identifier" elsif result[1] != "1" raise IOError, "Unsupported message server protocol version #{result[1]}" end @channel.write_scalar(username) @channel.write_scalar(password) result = @channel.read if result.nil? raise EOFError elsif result[0] != "ok" raise SecurityError, result[0] end rescue Exception @socket.close raise end end
BacktracesServer methods ###
# File lib/phusion_passenger/message_client.rb, line 106 def backtraces write("backtraces") check_security_response return read_scalar end
# File lib/phusion_passenger/message_client.rb, line 149 def check_security_response begin result = @channel.read rescue auto_disconnect raise end if result.nil? raise EOFError elsif result[0] != "Passed security" raise SecurityError, result[0] end end
# File lib/phusion_passenger/message_client.rb, line 67 def close @socket.close if @socket @channel = @socket = nil end
# File lib/phusion_passenger/message_client.rb, line 72 def connected? return !!@channel end
ApplicationPool::Server methods ###
# File lib/phusion_passenger/message_client.rb, line 78 def detach(detach_key) write("detach", detach_key) check_security_response result = read if result.nil? raise EOFError else return result.first == "true" end end
Low level I/O methods ###
# File lib/phusion_passenger/message_client.rb, line 114 def read return @channel.read rescue auto_disconnect raise end
# File lib/phusion_passenger/message_client.rb, line 135 def read_scalar return @channel.read_scalar rescue auto_disconnect raise end
# File lib/phusion_passenger/message_client.rb, line 142 def recv_io(klass = IO, negotiate = true) return @channel.recv_io(klass, negotiate) rescue auto_disconnect raise end
# File lib/phusion_passenger/message_client.rb, line 89 def status(options = {}) write("inspect", *options.to_a.flatten) check_security_response return read_scalar rescue auto_disconnect raise end
# File lib/phusion_passenger/message_client.rb, line 121 def write(*args) @channel.write(*args) rescue auto_disconnect raise end
Generated with the Darkfish Rdoc Generator 2.