class PhusionPassenger::MessageClient
A convenience class for communicating with MessageServer servers, for example the ApplicationPool server.
Public Class Methods
new(username, password, address = "unix:
click to toggle source
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
Public Instance Methods
check_security_response()
click to toggle source
# File lib/phusion_passenger/message_client.rb, line 185 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
close()
click to toggle source
# File lib/phusion_passenger/message_client.rb, line 67 def close @socket.close if @socket @channel = @socket = nil end
connected?()
click to toggle source
# File lib/phusion_passenger/message_client.rb, line 72 def connected? return !!@channel end
helper_agent_backtraces()
click to toggle source
HelperAgent BacktracesServer methods ###
# File lib/phusion_passenger/message_client.rb, line 134 def helper_agent_backtraces write("backtraces") check_security_response return read_scalar end
helper_agent_requests()
click to toggle source
# File lib/phusion_passenger/message_client.rb, line 126 def helper_agent_requests write("requests") check_security_response return read_scalar end
logging_agent_status()
click to toggle source
LoggingAgent AdminServer methods ###
# File lib/phusion_passenger/message_client.rb, line 142 def logging_agent_status write("status") check_security_response return read_scalar end
pool_detach_process(pid)
click to toggle source
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
pool_detach_process_by_key(detach_key)
click to toggle source
# 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
pool_status(options = {})
click to toggle source
# 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
pool_xml()
click to toggle source
# File lib/phusion_passenger/message_client.rb, line 109 def pool_xml write("toXml", true) check_security_response return read_scalar end
read()
click to toggle source
Low level I/O methods ###
# File lib/phusion_passenger/message_client.rb, line 150 def read return @channel.read rescue auto_disconnect raise end
read_scalar()
click to toggle source
# File lib/phusion_passenger/message_client.rb, line 171 def read_scalar return @channel.read_scalar rescue auto_disconnect raise end
recv_io(klass = IO, negotiate = true)
click to toggle source
# File lib/phusion_passenger/message_client.rb, line 178 def recv_io(klass = IO, negotiate = true) return @channel.recv_io(klass, negotiate) rescue auto_disconnect raise end
restart_app_group(app_group_name, options = {})
click to toggle source
# File lib/phusion_passenger/message_client.rb, line 115 def restart_app_group(app_group_name, options = {}) write("restart_app_group", app_group_name, *options.to_a.flatten) check_security_response result = read if result.nil? raise EOFError else return result.first == "true" end end
write(*args)
click to toggle source
# File lib/phusion_passenger/message_client.rb, line 157 def write(*args) @channel.write(*args) rescue auto_disconnect raise end
write_scalar(*args)
click to toggle source
# File lib/phusion_passenger/message_client.rb, line 164 def write_scalar(*args) @channel.write_scalar(*args) rescue auto_disconnect raise end
Private Instance Methods
auto_disconnect()
click to toggle source
# File lib/phusion_passenger/message_client.rb, line 200 def auto_disconnect if @channel @socket.close rescue nil @socket = @channel = nil end end