Class: AwsIotDevice::MqttShadowClient::ShadowTopicManager

Inherits:
Object
  • Object
show all
Defined in:
lib/aws_iot_device/mqtt_shadow_client/shadow_topic_manager.rb

Instance Method Summary collapse

Constructor Details

#initialize(mqtt_manager) ⇒ ShadowTopicManager

Returns a new instance of ShadowTopicManager.



7
8
9
10
11
12
13
# File 'lib/aws_iot_device/mqtt_shadow_client/shadow_topic_manager.rb', line 7

def initialize(mqtt_manager)
  if mqtt_manager.nil?
    raise "TopicAction_error: TopicAction should be initialized with a mqtt_manager but was undefined"
  end
  @mqtt_manager = mqtt_manager
  @sub_unsub_mutex = Mutex.new()
end

Instance Method Details

#client_idObject



15
16
17
# File 'lib/aws_iot_device/mqtt_shadow_client/shadow_topic_manager.rb', line 15

def client_id
  @mqtt_manager.client_id
end

#shadow_topic_publish(shadow_name, shadow_action, payload) ⇒ Object



19
20
21
22
# File 'lib/aws_iot_device/mqtt_shadow_client/shadow_topic_manager.rb', line 19

def shadow_topic_publish(shadow_name, shadow_action, payload)
  topic = TopicBuilder.new(shadow_name, shadow_action)
  @mqtt_manager.publish(topic.get_topic_general, payload, false, 0)
end

#shadow_topic_subscribe(shadow_name, shadow_action, callback = nil) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/aws_iot_device/mqtt_shadow_client/shadow_topic_manager.rb', line 24

def shadow_topic_subscribe(shadow_name, shadow_action, callback=nil)
  @sub_unsub_mutex.synchronize(){
    topic = TopicBuilder.new(shadow_name, shadow_action)
    if topic.is_delta?(shadow_action)
      @mqtt_manager.subscribe(topic.get_topic_delta, 0, callback)
    else
      @mqtt_manager.subscribe(topic.get_topic_accepted, 0, callback)
      @mqtt_manager.subscribe(topic.get_topic_rejected, 0, callback)
    end
  }
  sleep 2
end

#shadow_topic_unsubscribe(shadow_name, shadow_action) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
# File 'lib/aws_iot_device/mqtt_shadow_client/shadow_topic_manager.rb', line 37

def shadow_topic_unsubscribe(shadow_name, shadow_action)
  @sub_unsub_mutex.synchronize(){
    topic = TopicBuilder.new(shadow_name, shadow_action)
    if topic.is_delta?(shadow_name)
      @mqtt_manager.unsubscribe(topic.get_topic_delta)
    else
      @mqtt_manager.unsubscribe(topic.get_topic_accepted)
      @mqtt_manager.unsubscribe(topic.get_topic_rejected)
    end
  }
end