Class: MQTT::Subscriptions::ValueTrackerSubscription

Inherits:
Subscription
  • Object
show all
Defined in:
lib/mqtt/subscription_classes.rb

Instance Attribute Summary collapse

Attributes inherited from Subscription

#qos, #topic, #topic_split

Instance Method Summary collapse

Constructor Details

#initialize(topic, qos = 1) ⇒ ValueTrackerSubscription

Returns a new instance of ValueTrackerSubscription.

Raises:

  • (ArgumentError)


50
51
52
53
54
55
56
57
# File 'lib/mqtt/subscription_classes.rb', line 50

def initialize(topic, qos = 1)
	raise ArgumentError, "Tracking of topic wildcards is prohibited! Topic: #{topic}" if topic =~ /[#\+]/
	super(topic, qos);

	@value = nil;

	@callbackList = Array.new();
end

Instance Attribute Details

#valueObject (readonly)

Returns the value of attribute value.



48
49
50
# File 'lib/mqtt/subscription_classes.rb', line 48

def value
  @value
end

Instance Method Details

#attach(callback) ⇒ Object



68
69
70
71
72
# File 'lib/mqtt/subscription_classes.rb', line 68

def attach(callback)
	@callbackList << callback;
	callback.call(@value, nil) if(@value);
	return callback;
end

#detach(callback) ⇒ Object



73
74
75
# File 'lib/mqtt/subscription_classes.rb', line 73

def detach(callback)
	@callbackList.delete callback;
end

#offer(topicList, data) ⇒ Object



59
60
61
62
63
64
65
66
# File 'lib/mqtt/subscription_classes.rb', line 59

def offer(topicList, data)
	return if data == @value;

	@callbackList.each do |cb|
		cb.call(data, @value);
	end
	@value = data;
end