class Emque::Consuming::CommandReceivers::UnixSocket

Public Instance Methods

start() click to toggle source
# File lib/emque/consuming/command_receivers/unix_socket.rb, line 9
def start
  @thread = new_socket_server
  status
end

Private Instance Methods

app_name() click to toggle source
# File lib/emque/consuming/command_receivers/unix_socket.rb, line 16
def app_name
  config.app_name.capitalize
end
bad_request(handler) click to toggle source
# File lib/emque/consuming/command_receivers/unix_socket.rb, line 56
        def bad_request(handler)
          <<-OUT
The request was not formatted properly.
We suggest using Emque::Consuming::Transmitter to send a requests.",
-------
#{handler.help rescue "Help broken"}
          OUT
        end
log_error(e) click to toggle source
# File lib/emque/consuming/command_receivers/unix_socket.rb, line 65
def log_error(e)
  logger.error(e.inspect)
  e.backtrace.each do |bt|
    logger.error(bt)
  end
end
new_socket_server() click to toggle source
# File lib/emque/consuming/command_receivers/unix_socket.rb, line 20
def new_socket_server
  Thread.new {
    loop do
      Socket.unix_server_loop(config.socket_path) do |sock, client_addr|
        begin
          receive_command(sock)
        rescue
          # nothing to do but restart the socket
        ensure
          sock.close
        end
      end
    end
  }
end
receive_command(sock) click to toggle source
# File lib/emque/consuming/command_receivers/unix_socket.rb, line 36
def receive_command(sock)
  req = Oj.load(sock.recv(100000), :symbol_keys => true)
  handler = Handler.new(req)
  sock.send(handler.respond, 0)
rescue Oj::ParseError => e
  sock.send(bad_request(handler), 0)
  log_error(e)
rescue NoMethodError => e
  sock.send(bad_request(handler), 0)
  log_error(e)
rescue ArgumentError => e
  sock.send(bad_request(handler), 0)
  log_error(e)
rescue => e
  sock.send(e.inspect, 0)
  log_error(e)
end