class Procodile::ControlClient

Public Class Methods

new(sock_path, &block) click to toggle source
# File lib/procodile/control_client.rb, line 7
def initialize(sock_path, &block)
  @socket = UNIXSocket.new(sock_path)
  if block_given?
    begin
      block.call(self)
    ensure
      disconnect
    end
  end
end
run(sock_path, command, options = {}) click to toggle source
# File lib/procodile/control_client.rb, line 18
def self.run(sock_path, command, options = {})
  socket = self.new(sock_path)
  socket.run(command, options)
ensure
  socket.disconnect rescue nil
end

Public Instance Methods

disconnect() click to toggle source
# File lib/procodile/control_client.rb, line 43
def disconnect
  @socket.close rescue nil
end
run(command, options = {}) click to toggle source
# File lib/procodile/control_client.rb, line 25
def run(command, options = {})
  @socket.puts("#{command} #{options.to_json}")
  if data = @socket.gets
    code, reply = data.strip.split(/\s+/, 2)
    if code.to_i == 200
      if reply && reply.length > 0
        JSON.parse(reply)
      else
        true
      end
    else
      raise Error, "Error from control server: #{code} (#{reply.inspect})"
    end
  else
    raise Error ,"Control server disconnected."
  end
end

Private Instance Methods

parse_response(data) click to toggle source
# File lib/procodile/control_client.rb, line 49
def parse_response(data)
  code, message = data.split(/\s+/, 2)
end