mqtt-sub_handler 0.1.6.6 → 0.1.6.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/mqtt/base_handler.rb +36 -21
  3. metadata +6 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2ba341adcdf6af88c17d55b3d85c26636433d70a
4
- data.tar.gz: 71da42b10aef17c6e18f76fd8ad58d82567ffc28
3
+ metadata.gz: 9be8cc94d063f20f4e602ca44c33e1f063fcd8db
4
+ data.tar.gz: b115b3aa01cdb8aceab2ba442d1e8748c25ce3e1
5
5
  SHA512:
6
- metadata.gz: e13a27eecb49d53065c61984138522e21300af90c43e9abd2e89b79c07d98081069c4df78bbb32e2f3363f7e160b70c871ce65dafb4e7fe422462e5add584bcd
7
- data.tar.gz: 76035229d908f29eacced39d530b1d963333e70b87f943039280f2af326d791aa81364c1889c301015827534ff956dcff490372075f8cfd485c75a705693ba51
6
+ metadata.gz: 18305fa0dbabdaea4762c0b53adec091bd0db67f06ef23aca414ab136ccc35e50c26641f5d21cd6d70554a6b213f87295b23ceaab1f07d9ff04f0e17fef53770
7
+ data.tar.gz: 8b1aa38aad47777c42538ef19d17db3cf9cd49259d177863664d8ae561406d0691a7e80b774e1f6dd5f6d09d8ce6c8bda7a23a933a2f68b593e29daf857aa7fe
@@ -161,7 +161,28 @@ module MQTT
161
161
  end
162
162
  private :ensure_clean_exit
163
163
 
164
+ def attempt_packet_publish()
165
+ until @packetQueue.empty? do
166
+ h = nil;
167
+ @packetQueueMutex.synchronize {
168
+ h = @packetQueue[0];
169
+ }
170
+ Timeout.timeout(3) {
171
+ if(h[:type] == :sub)
172
+ @mqtt.subscribe(h[:topic] => h[:qos]);
173
+ elsif(h[:type] == :pub)
174
+ @mqtt.publish(h[:topic], h[:data], h[:retain], h[:qos]);
175
+ end
176
+ }
177
+ @packetQueueMutex.synchronize {
178
+ @packetQueue.shift();
179
+ }
180
+ end
181
+ end
182
+
164
183
  def mqtt_push_thread
184
+ @push_error_count = 0;
185
+
165
186
  loop do
166
187
  @packetQueueMutex.synchronize {
167
188
  @publisherThreadWaiting = true;
@@ -177,27 +198,19 @@ module MQTT
177
198
  next unless @connected
178
199
 
179
200
  begin
180
- until @packetQueue.empty? do
181
- h = nil;
182
- @packetQueueMutex.synchronize {
183
- h = @packetQueue[0];
184
- }
185
- Timeout.timeout(3) {
186
- if(h[:type] == :sub)
187
- @mqtt.subscribe(h[:topic] => h[:qos]);
188
- elsif(h[:type] == :pub)
189
- @mqtt.publish(h[:topic], h[:data], h[:retain], h[:qos]);
190
- end
191
- }
192
- @packetQueueMutex.synchronize {
193
- @packetQueue.shift();
194
- }
195
- end
201
+ attempt_packet_publish();
196
202
  rescue MQTT::Exception, SocketError, SystemCallError, Timeout::Error => e
197
- x_loge("Push error!");
198
- x_loge(e.inspect);
203
+ x_loge("Push error!");
204
+ x_loge(e.inspect);
199
205
 
200
- sleep 0.5
206
+ @push_error_count += 1;
207
+ if(@push_error_count >= 10)
208
+ @mqtt.disconnect();
209
+ end
210
+
211
+ sleep 0.5
212
+ else
213
+ @push_error_count = 0;
201
214
  end
202
215
  end
203
216
 
@@ -284,11 +297,13 @@ module MQTT
284
297
  # @example Starting the handler
285
298
  # mqtt = MQTT::SubHandler.new('mqtt.eclipse.org');
286
299
  # mqtt = MQTT::SubHandler.new(MQTT::Client.new("Your.Client.Opts"))
287
- def initialize(mqttClient, logger: nil)
300
+ def initialize(mqttClient, logger: nil, **extra_opts)
288
301
  @callbackList = Array.new();
289
302
  if mqttClient.is_a? String
290
303
  @mqtt = MQTT::Client.new(mqttClient);
291
304
  @mqtt.clean_session = false;
305
+
306
+ @mqttWasStartedClean = true if extra_opts[:client_id].nil?
292
307
  else
293
308
  @mqtt = mqttClient;
294
309
  end
@@ -300,7 +315,7 @@ module MQTT
300
315
  @connected = false;
301
316
  @reconnectCount = 0;
302
317
 
303
- @mqtt.client_id ||= MQTT::Client.generate_client_id("MQTT_Sub_", 8);
318
+ @mqtt.client_id ||= extra_opts[:client_id] || MQTT::Client.generate_client_id("MQTT_Sub_", 8);
304
319
 
305
320
  @packetQueue = Array.new();
306
321
  @packetQueueMutex = Mutex.new();
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mqtt-sub_handler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6.6
4
+ version: 0.1.6.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Xasin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-11-08 00:00:00.000000000 Z
11
+ date: 2021-01-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mqtt
@@ -28,16 +28,16 @@ dependencies:
28
28
  name: json
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: '2.2'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: '2.2'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: xasin-logger
43
43
  requirement: !ruby/object:Gem::Requirement