class EventMachine::MQTT::Server

Attributes

address[RW]
logger[RW]
port[RW]

Public Class Methods

new(args=[]) click to toggle source
# File lib/em/mqtt/server.rb, line 8
def initialize(args=[])
  # Set defaults
  self.address = "0.0.0.0"
  self.port = MQTT::DEFAULT_PORT
  self.logger = Logger.new(STDOUT)
  self.logger.level = Logger::INFO
  parse(args) unless args.empty?
end

Public Instance Methods

parse(args) click to toggle source
# File lib/em/mqtt/server.rb, line 17
def parse(args)
  OptionParser.new("", 24, '  ') do |opts|
    opts.banner = "Usage: #{File.basename $0} [options]"

    opts.separator ""
    opts.separator "Options:"

    opts.on("-D", "--debug", "turn on debug logging") do
      self.logger.level = Logger::DEBUG
    end

    opts.on("-a", "--address [HOST]", "bind to HOST address (default: #{address})") do |address|
      self.address = address
    end

    opts.on("-p", "--port [PORT]", "port number to run on (default: #{port})") do |port|
      self.port = port
    end

    opts.on_tail("-h", "--help", "show this message") do
      puts opts
      exit
    end

    opts.on_tail("--version", "show version") do
      puts EventMachine::MQTT::VERSION
      exit
    end

    opts.parse!(args)
  end
end
run() click to toggle source
# File lib/em/mqtt/server.rb, line 50
def run
  EventMachine.run do
    # hit Control + C to stop
    Signal.trap("INT")  { EventMachine.stop }
    Signal.trap("TERM") { EventMachine.stop }

    logger.info("Starting MQTT server on #{address}:#{port}")
    EventMachine.start_server(address, port, EventMachine::MQTT::ServerConnection, logger)
  end
end