class AwsIotDevice::MqttShadowClient::MqttManager

Attributes

client_id[R]
connection_timeout_s[RW]
mqtt_operation_timeout_s[RW]
ssl[RW]

Public Class Methods

new(*args) click to toggle source
# File lib/aws_iot_device/mqtt_shadow_client/mqtt_manager.rb, line 15
def initialize(*args)
  @client = create_mqtt_adapter(*args)
  @mqtt_operation_timeout_s = 2
  @mutex_publish = Mutex.new()
  @mutex_subscribe = Mutex.new()
  @mutex_unsubscribe = Mutex.new()
end

Public Instance Methods

add_topic_callback(topic, callback, &block) click to toggle source
# File lib/aws_iot_device/mqtt_shadow_client/mqtt_manager.rb, line 174
def add_topic_callback(topic, callback, &block)
  @client.add_callback_filter_topic(topic, callback, &block)
end
config_endpoint(host, port) click to toggle source
# File lib/aws_iot_device/mqtt_shadow_client/mqtt_manager.rb, line 47
def config_endpoint(host, port)
  raise ArgumentError, "configure endpoint either host or port is nil" if host.nil? || port.nil?
  @client.host = host
  @client.port = port
end
config_ssl_context(ca_file, key, cert) click to toggle source
# File lib/aws_iot_device/mqtt_shadow_client/mqtt_manager.rb, line 53
def config_ssl_context(ca_file, key, cert)
  self.ca_file = ca_file
  self.key = key
  self.cert = cert
  @client.set_tls_ssl_context(@ca_file, @cert, @key)
end
connect(*args, &block) click to toggle source
# File lib/aws_iot_device/mqtt_shadow_client/mqtt_manager.rb, line 60
def connect(*args, &block)
  ### Execute a mqtt opration loop in background for time period defined by mqtt_connection_timeout
  @client.connect(*args, &block)
end
create_mqtt_adapter(*args) click to toggle source
# File lib/aws_iot_device/mqtt_shadow_client/mqtt_manager.rb, line 43
def create_mqtt_adapter(*args)
  @client = MqttAdapter::Client.new(*args)
end
disconnect() click to toggle source
# File lib/aws_iot_device/mqtt_shadow_client/mqtt_manager.rb, line 65
def disconnect
  @client.disconnect
end
host() click to toggle source
# File lib/aws_iot_device/mqtt_shadow_client/mqtt_manager.rb, line 27
def host
  @client.host
end
host=(host) click to toggle source
# File lib/aws_iot_device/mqtt_shadow_client/mqtt_manager.rb, line 23
def host=(host)
  @client.host = host
end
on_connack(&block) click to toggle source
# File lib/aws_iot_device/mqtt_shadow_client/mqtt_manager.rb, line 142
def on_connack(&block)
  @client.on_connack(&block) if paho_client?
end
on_connack=(callback) click to toggle source
# File lib/aws_iot_device/mqtt_shadow_client/mqtt_manager.rb, line 110
def on_connack=(callback)
  @client.on_connack = callback if paho_client?
end
on_message(&block) click to toggle source
# File lib/aws_iot_device/mqtt_shadow_client/mqtt_manager.rb, line 170
def on_message(&block)
  @client.on_message(&block)
end
on_message=(callback) click to toggle source
# File lib/aws_iot_device/mqtt_shadow_client/mqtt_manager.rb, line 138
def on_message=(callback)
  @client.on_message = callback
end
on_puback(&block) click to toggle source
# File lib/aws_iot_device/mqtt_shadow_client/mqtt_manager.rb, line 154
def on_puback(&block)
  @client.on_puback(&block) if paho_client?
end
on_puback=(callback) click to toggle source
# File lib/aws_iot_device/mqtt_shadow_client/mqtt_manager.rb, line 122
def on_puback=(callback)
  @client.on_puback = callback if paho_client?
end
on_pubcomp(&block) click to toggle source
# File lib/aws_iot_device/mqtt_shadow_client/mqtt_manager.rb, line 166
def on_pubcomp(&block)
  @client.on_pubcomp(&block) if paho_client?
end
on_pubcomp=(callback) click to toggle source
# File lib/aws_iot_device/mqtt_shadow_client/mqtt_manager.rb, line 134
def on_pubcomp=(callback)
  @client.on_pubcomp = callback if paho_client?
end
on_pubrec(&block) click to toggle source
# File lib/aws_iot_device/mqtt_shadow_client/mqtt_manager.rb, line 158
def on_pubrec(&block)
  @client.on_pubrec(&block) if paho_client?
end
on_pubrec=(callback) click to toggle source
# File lib/aws_iot_device/mqtt_shadow_client/mqtt_manager.rb, line 126
def on_pubrec=(callback)
  @client.on_pubrec = callback if paho_client?
end
on_pubrel(&block) click to toggle source
# File lib/aws_iot_device/mqtt_shadow_client/mqtt_manager.rb, line 162
def on_pubrel(&block)
  @client.on_pubrel(&block) if paho_client?
end
on_pubrel=(callback) click to toggle source
# File lib/aws_iot_device/mqtt_shadow_client/mqtt_manager.rb, line 130
def on_pubrel=(callback)
  @client.on_pubrel = callback if paho_client?
end
on_suback(&block) click to toggle source
# File lib/aws_iot_device/mqtt_shadow_client/mqtt_manager.rb, line 146
def on_suback(&block)
  @client.on_suback(&block) if paho_client?
end
on_suback=(callback) click to toggle source
# File lib/aws_iot_device/mqtt_shadow_client/mqtt_manager.rb, line 114
def on_suback=(callback)
  @client.on_suback = callback if paho_client?
end
on_unsuback(&block) click to toggle source
# File lib/aws_iot_device/mqtt_shadow_client/mqtt_manager.rb, line 150
def on_unsuback(&block)
  @client.on_unsuback(&block) if paho_client?
end
on_unsuback=(callback) click to toggle source
# File lib/aws_iot_device/mqtt_shadow_client/mqtt_manager.rb, line 118
def on_unsuback=(callback)
  @client.on_unsuback = callback if paho_client?
end
paho_client?() click to toggle source
# File lib/aws_iot_device/mqtt_shadow_client/mqtt_manager.rb, line 182
def paho_client?
  @client.adapter.class == MqttAdapter::PahoMqttAdapter
end
port() click to toggle source
# File lib/aws_iot_device/mqtt_shadow_client/mqtt_manager.rb, line 35
def port
  @client.port
end
port=(port) click to toggle source
# File lib/aws_iot_device/mqtt_shadow_client/mqtt_manager.rb, line 31
def port=(port)
 @client.port = port
end
publish(topic, payload="", retain=nil, qos=0) click to toggle source
# File lib/aws_iot_device/mqtt_shadow_client/mqtt_manager.rb, line 69
def publish(topic, payload="", retain=nil, qos=0)
  raise ArgumentError, "publish topic cannot be nil" if topic.nil?
  @mutex_publish.synchronize {
    @client.publish(topic, payload, retain, qos)
  }
end
remove_topic_callback(topic) click to toggle source
# File lib/aws_iot_device/mqtt_shadow_client/mqtt_manager.rb, line 178
def remove_topic_callback(topic)
  @client.remove_callback_filter_topic(topic)
end
subscribe(topic, qos=0, callback=nil) click to toggle source
# File lib/aws_iot_device/mqtt_shadow_client/mqtt_manager.rb, line 76
def subscribe(topic, qos=0, callback=nil)
  raise ArgumentError, "subscribe topic cannot be nil" if topic.nil?
  @mutex_subscribe.synchronize {
    @client.add_callback_filter_topic(topic, callback)
    @client.subscribe(topic, qos)
  }
end
subscribe_bunch(*topics) click to toggle source
# File lib/aws_iot_device/mqtt_shadow_client/mqtt_manager.rb, line 84
def subscribe_bunch(*topics)
  @mutex_subscribe.synchronize {
    topics.each do |topic|
      @client.add_callback_filter_topic(topic.first, topic.pop) if !topic[2].nil? && topic[2].is_a?(Proc)
    end
    @client.subscribe_bunch(topics)
  }
end
unsubscribe(topic) click to toggle source
# File lib/aws_iot_device/mqtt_shadow_client/mqtt_manager.rb, line 93
def unsubscribe(topic)
  raise ArgumentError, "unsubscribe topic cannot be nil" if topic.nil?
  @mutex_unsubscribe.synchronize{
    @client.remove_callback_filter_topic(topic)
    @client.unsubscribe(topic)
  }
end
unsubscribe_bunch(*topics) click to toggle source
# File lib/aws_iot_device/mqtt_shadow_client/mqtt_manager.rb, line 101
def unsubscribe_bunch(*topics)
  @mutex_unsubscribe.synchronize {
    topics.each do |topic|
      @client.remove_callback_filter_topic(topic)
    end
    @client.unsubscribe_bunch(topics)
  }
end

Private Instance Methods

ca_file=(path) click to toggle source
# File lib/aws_iot_device/mqtt_shadow_client/mqtt_manager.rb, line 196
def ca_file=(path)
  @ca_file = path
end
cert=(path) click to toggle source
# File lib/aws_iot_device/mqtt_shadow_client/mqtt_manager.rb, line 188
def cert=(path)
  @cert = path
end
key=(path) click to toggle source
# File lib/aws_iot_device/mqtt_shadow_client/mqtt_manager.rb, line 192
def key=(path)
  @key = path
end