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
# File lib/phusion_passenger/message_client.rb, line 174 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
HelperAgent BacktracesServer methods ###
# File lib/phusion_passenger/message_client.rb, line 123 def helper_agent_backtraces write("backtraces") check_security_response return read_scalar end
# File lib/phusion_passenger/message_client.rb, line 115 def helper_agent_requests write("requests") check_security_response return read_scalar end
LoggingAgent AdminServer methods ###
# File lib/phusion_passenger/message_client.rb, line 131 def logging_agent_status write("status") check_security_response return read_scalar end
HelperAgent methods ###
# File lib/phusion_passenger/message_client.rb, line 78 def pool_detach_process(pid) write("detach_process", pid) check_security_response result = read if result.nil? raise EOFError else return result.first == "true" end end
# File lib/phusion_passenger/message_client.rb, line 89 def pool_detach_process_by_key(detach_key) write("detach_process_by_key", detach_key) check_security_response result = read if result.nil? raise EOFError else return result.first == "true" end end
# File lib/phusion_passenger/message_client.rb, line 100 def pool_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 109 def pool_xml write("toXml", true) check_security_response return read_scalar end
Low level I/O methods ###
# File lib/phusion_passenger/message_client.rb, line 139 def read return @channel.read rescue auto_disconnect raise end
# File lib/phusion_passenger/message_client.rb, line 160 def read_scalar return @channel.read_scalar rescue auto_disconnect raise end
# File lib/phusion_passenger/message_client.rb, line 167 def recv_io(klass = IO, negotiate = true) return @channel.recv_io(klass, negotiate) rescue auto_disconnect raise end
Generated with the Darkfish Rdoc Generator 2.