class AwsIotDevice::MqttAdapter::RubyMqttAdapter
Attributes
client_id[R]
filtered_topics[RW]
Public Class Methods
new(*args)
click to toggle source
# File lib/aws_iot_device/mqtt_adapter/ruby_mqtt_adapter.rb, line 12 def initialize(*args) @client = MQTT::Client.new(*args) @filtered_topics = {} @client_id = "" @client_id = generate_client_id end
Public Instance Methods
add_callback_filter_topic(topic, callback)
click to toggle source
# File lib/aws_iot_device/mqtt_adapter/ruby_mqtt_adapter.rb, line 168 def add_callback_filter_topic(topic, callback) unless callback.nil? @filtered_topics[topic] = callback else @filtered_topic.delete(topic) end end
connect(*args, &block)
click to toggle source
# File lib/aws_iot_device/mqtt_adapter/ruby_mqtt_adapter.rb, line 31 def connect(*args, &block) @client = create_client(*args) if @client.nil? @client.connect(&block) loop_start end
connected?()
click to toggle source
# File lib/aws_iot_device/mqtt_adapter/ruby_mqtt_adapter.rb, line 50 def connected? @client.connected? end
create_client(*args)
click to toggle source
# File lib/aws_iot_device/mqtt_adapter/ruby_mqtt_adapter.rb, line 27 def create_client(*args) @client = MQTT::Client.new(*args) end
disconnect(send_msg=true)
click to toggle source
# File lib/aws_iot_device/mqtt_adapter/ruby_mqtt_adapter.rb, line 46 def disconnect(send_msg=true) @client.disconnect(send_msg) end
generate_client_id(prefix='ruby', lenght=16)
click to toggle source
# File lib/aws_iot_device/mqtt_adapter/ruby_mqtt_adapter.rb, line 37 def generate_client_id(prefix='ruby', lenght=16) charset = Array('A'..'Z') + Array('a'..'z') + Array('0'..'9') @client_id << prefix << Array.new(lenght) { charset.sample }.join end
get(topic=nil, &block)
click to toggle source
# File lib/aws_iot_device/mqtt_adapter/ruby_mqtt_adapter.rb, line 58 def get(topic=nil, &block) @client.get(topic, &block) end
get_packet(topic=nil, &block)
click to toggle source
# File lib/aws_iot_device/mqtt_adapter/ruby_mqtt_adapter.rb, line 62 def get_packet(topic=nil, &block) @client.get_packet(topic, &block) end
host()
click to toggle source
# File lib/aws_iot_device/mqtt_adapter/ruby_mqtt_adapter.rb, line 78 def host @client.host end
host=(host)
click to toggle source
# File lib/aws_iot_device/mqtt_adapter/ruby_mqtt_adapter.rb, line 82 def host=(host) @client.host = host end
loop_forever()
click to toggle source
# File lib/aws_iot_device/mqtt_adapter/ruby_mqtt_adapter.rb, line 116 def loop_forever loop do mqtt_loop sleep 0.005 end end
loop_misc()
click to toggle source
# File lib/aws_iot_device/mqtt_adapter/ruby_mqtt_adapter.rb, line 149 def loop_misc puts "loop_misc is unavailable for ruby-mqtt client's" end
loop_read(max_message=10)
click to toggle source
# File lib/aws_iot_device/mqtt_adapter/ruby_mqtt_adapter.rb, line 129 def loop_read(max_message=10) counter_message = 0 while !@client.queue_empty? && counter_message <= max_message message = get_packet ### Fitlering message if matching to filtered topic topic = message.topic if @filtered_topics.key?(topic) callback = @filtered_topics[topic] callback.call(message) else on_message_callback(message) end counter_message += 1 end end
loop_start()
click to toggle source
Custom Features #################
# File lib/aws_iot_device/mqtt_adapter/ruby_mqtt_adapter.rb, line 108 def loop_start Thread.new{ loop_forever } end
loop_stop(thread)
click to toggle source
# File lib/aws_iot_device/mqtt_adapter/ruby_mqtt_adapter.rb, line 112 def loop_stop(thread) thread.join end
loop_write()
click to toggle source
# File lib/aws_iot_device/mqtt_adapter/ruby_mqtt_adapter.rb, line 145 def loop_write puts "loop_write is unavailable for ruby-mqtt client's" end
mqtt_loop()
click to toggle source
# File lib/aws_iot_device/mqtt_adapter/ruby_mqtt_adapter.rb, line 123 def mqtt_loop loop_read loop_write loop_misc end
on_message(&block)
click to toggle source
# File lib/aws_iot_device/mqtt_adapter/ruby_mqtt_adapter.rb, line 157 def on_message(&block) @on_message = block if block_given? @on_message end
on_message=(callback)
click to toggle source
# File lib/aws_iot_device/mqtt_adapter/ruby_mqtt_adapter.rb, line 153 def on_message=(callback) @on_message = callback end
on_message_callback(message)
click to toggle source
# File lib/aws_iot_device/mqtt_adapter/ruby_mqtt_adapter.rb, line 162 def on_message_callback(message) if @on_message.is_a?(Proc) || @on_message.lambda? @on_message.call(message) end end
port()
click to toggle source
# File lib/aws_iot_device/mqtt_adapter/ruby_mqtt_adapter.rb, line 86 def port @client.port end
port=(port)
click to toggle source
# File lib/aws_iot_device/mqtt_adapter/ruby_mqtt_adapter.rb, line 90 def port=(port) @client.port = port end
publish(topic, payload='', retain=false, qos=0)
click to toggle source
# File lib/aws_iot_device/mqtt_adapter/ruby_mqtt_adapter.rb, line 23 def publish(topic, payload='', retain=false, qos=0) @client.publish(topic, payload, retain, qos) end
queue_empty?()
click to toggle source
# File lib/aws_iot_device/mqtt_adapter/ruby_mqtt_adapter.rb, line 66 def queue_empty? @client.queue_empty? end
queue_length()
click to toggle source
# File lib/aws_iot_device/mqtt_adapter/ruby_mqtt_adapter.rb, line 70 def queue_length @client.queue_length end
remove_callback_filter_topic(topic)
click to toggle source
# File lib/aws_iot_device/mqtt_adapter/ruby_mqtt_adapter.rb, line 176 def remove_callback_filter_topic(topic) if @filtered_topics.key(topic) @filtered_topics.delete(topic) end end
set_tls_ssl_context(ca_cert, cert=nil, key=nil)
click to toggle source
# File lib/aws_iot_device/mqtt_adapter/ruby_mqtt_adapter.rb, line 98 def set_tls_ssl_context(ca_cert, cert=nil, key=nil) @client.ssl ||= true @client.ssl_context @client.cert_file = cert @client.key_file = key @client.ca_file = ca_cert end
ssl=(ssl)
click to toggle source
# File lib/aws_iot_device/mqtt_adapter/ruby_mqtt_adapter.rb, line 94 def ssl=(ssl) @client.ssl = ssl end
ssl_context()
click to toggle source
# File lib/aws_iot_device/mqtt_adapter/ruby_mqtt_adapter.rb, line 42 def ssl_context @client.ssl_context end
subscribe(topics, qos=0)
click to toggle source
# File lib/aws_iot_device/mqtt_adapter/ruby_mqtt_adapter.rb, line 54 def subscribe(topics, qos=0) @client.subscribe(topics, qos) end
unsubscribe(*topics)
click to toggle source
# File lib/aws_iot_device/mqtt_adapter/ruby_mqtt_adapter.rb, line 74 def unsubscribe(*topics) @client.unsubscribe(*topics) end