Parent

Included Modules

Class/Module Index [+]

Quicksearch

PhusionPassenger::MessageClient

A convenience class for communicating with MessageServer servers, for example the ApplicationPool server.

Public Class Methods

new(username, password, address = "unix:#{Utils.passenger_tmpdir}/socket") 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 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
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 123
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 115
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 131
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 139
def read
        return @channel.read
rescue
        auto_disconnect
        raise
end
read_scalar() click to toggle source
# File lib/phusion_passenger/message_client.rb, line 160
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 167
def recv_io(klass = IO, negotiate = true)
        return @channel.recv_io(klass, negotiate)
rescue
        auto_disconnect
        raise
end
write(*args) click to toggle source
# File lib/phusion_passenger/message_client.rb, line 146
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 153
def write_scalar(*args)
        @channel.write_scalar(*args)
rescue
        auto_disconnect
        raise
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.