class EventMachine::MQTTSN::Gateway

Attributes

local_address[RW]
local_port[RW]
logger[RW]
server_address[RW]
server_port[RW]

Public Class Methods

new(args=[]) click to toggle source
# File lib/em/mqtt-sn/gateway.rb, line 10
def initialize(args=[])
  # Set defaults
  self.local_address = "0.0.0.0"
  self.local_port = EventMachine::MQTTSN::DEFAULT_PORT
  self.server_address = "127.0.0.1"
  self.server_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-sn/gateway.rb, line 21
def parse(args)
  OptionParser.new("", 28, '  ') 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: #{local_address})") do |address|
      self.local_address = address
    end

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

    opts.on("-A", "--server-address [HOST]", "MQTT server address to connect to (default: #{server_address})") do |address|
      self.server_address = address
    end

    opts.on("-P", "--server-port [PORT]", "MQTT server port to connect to (default: #{server_port})") do |port|
      self.server_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::MQTTSN::VERSION
      exit
    end

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

    logger.info("Starting MQTT-SN gateway on UDP #{local_address}:#{local_port}")
    logger.info("MQTT server address #{server_address}:#{server_port}")
    EventMachine.open_datagram_socket(
      local_address,
      local_port,
      EventMachine::MQTTSN::GatewayHandler,
      :logger => logger,
      :server_address => server_address,
      :server_port => server_port
    )
  end
end