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) click to toggle source

Connect to the given server. By default it connects to the current generation's core.

# File lib/phusion_passenger/message_client.rb, line 37
def initialize(username, password, address)
  @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 184
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 66
def close
  @socket.close if @socket
  @channel = @socket = nil
end
connected?() click to toggle source
# File lib/phusion_passenger/message_client.rb, line 71
def connected?
  return !!@channel
end
core_backtraces() click to toggle source

Passenger core BacktracesServer methods ###

# File lib/phusion_passenger/message_client.rb, line 133
def core_backtraces
  write("backtraces")
  check_security_response
  return read_scalar
end
core_requests() click to toggle source
# File lib/phusion_passenger/message_client.rb, line 125
def core_requests
  write("requests")
  check_security_response
  return read_scalar
end
pool_detach_process(pid) click to toggle source

Passenger core process methods ###

# File lib/phusion_passenger/message_client.rb, line 77
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 88
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 99
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 108
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 149
def read
  return @channel.read
rescue
  auto_disconnect
  raise
end
read_scalar() click to toggle source
# File lib/phusion_passenger/message_client.rb, line 170
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 177
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 114
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
ust_router_status() click to toggle source

Passenger UstRouter AdminServer methods ###

# File lib/phusion_passenger/message_client.rb, line 141
def ust_router_status
  write("status")
  check_security_response
  return read_scalar
end
write(*args) click to toggle source
# File lib/phusion_passenger/message_client.rb, line 156
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 163
def write_scalar(*args)
  @channel.write_scalar(*args)
rescue
  auto_disconnect
  raise
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.