omf_common 6.0.5 → 6.0.6
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.
- checksums.yaml +8 -8
- data/lib/omf_common/comm/xmpp/communicator.rb +56 -13
- data/lib/omf_common/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MDhiNzEzYjc1OTczZmI5NGM4OTg2YjBjODM0Zjk0NWQxYTJiNTgzNA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
OTE2MzRhMjBlYzhiMDU0MTA4OTY1YTQ0ODFjN2RmNmQ5NTlkOWY4Ng==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NGViOWZiYmZjZDIyMzY0Y2ZiZDUxZjQ1M2I0ZjAwNWViMTM3Y2JlOTIyYTg0
|
10
|
+
MjgwNzE1NjM3OTQ5NWQxNTFmM2I3MzM4OWU5MGFmOGUzYjM1OWFlMTg0ZjYz
|
11
|
+
ZjAzMDQzZTgzNjM4YjE3YjJhOGY5NTE4ZDQ0MDRmMWQwNzhlMGU=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MzY3ZmY1NjkzMjg1YjMyMGNkZWM0YzdkZTM2Njc3YjFhZTAzYzdhMjI3NWU4
|
14
|
+
MjE2NGZkZTMxNjc5MGE4MGQyODQ1MjM1ZmRmZDU4YzEzNDQ4NDRiZWEzM2E4
|
15
|
+
OTFhNjg4YjZhOTkwNzM1OTNiYzAxMDE1ZTZlMDg3ZDEwMDU4NzQ=
|
@@ -10,6 +10,18 @@ require 'omf_common/comm/xmpp/topic'
|
|
10
10
|
require 'uri'
|
11
11
|
require 'socket'
|
12
12
|
|
13
|
+
module Blather
|
14
|
+
class Stream
|
15
|
+
def unbind
|
16
|
+
cleanup
|
17
|
+
raise NoConnection unless @inited
|
18
|
+
@state = :stopped
|
19
|
+
@client.receive_data @error if @error
|
20
|
+
@client.unbind
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
13
25
|
module OmfCommon
|
14
26
|
class Comm
|
15
27
|
class XMPP
|
@@ -19,6 +31,8 @@ class Comm
|
|
19
31
|
attr_accessor :published_messages, :normal_shutdown_mode, :retry_counter
|
20
32
|
|
21
33
|
HOST_PREFIX = 'pubsub'
|
34
|
+
RETRY_INTERVAL = 5
|
35
|
+
PING_INTERVAL = 5
|
22
36
|
|
23
37
|
PUBSUB_CONFIGURE = Blather::Stanza::X.new({
|
24
38
|
:type => :submit,
|
@@ -65,24 +79,35 @@ class Comm
|
|
65
79
|
|
66
80
|
@retry_counter = 0
|
67
81
|
@normal_shutdown_mode = false
|
82
|
+
@pong = true
|
68
83
|
|
69
84
|
connect(username, password, server)
|
70
85
|
|
71
86
|
when_ready do
|
72
|
-
@
|
87
|
+
@ping_alive_timer = OmfCommon.el.every(PING_INTERVAL) do
|
88
|
+
if @pong
|
89
|
+
ping_alive
|
90
|
+
else
|
91
|
+
warn "No connection..."
|
92
|
+
@ping_alive_timer.cancel
|
93
|
+
@not_initial_connection = true
|
94
|
+
OmfCommon.el.after(RETRY_INTERVAL) do
|
95
|
+
client.run
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
info "Reconnected" if @not_initial_connection
|
100
|
+
@cbks[:connected].each { |cbk| cbk.call(self) } unless @not_initial_connection
|
73
101
|
end
|
74
102
|
|
75
103
|
disconnected do
|
76
|
-
|
77
|
-
unless retry_counter > 0
|
78
|
-
@retry_counter += 1
|
79
|
-
client.connect
|
80
|
-
else
|
81
|
-
error "Authentication failed."
|
82
|
-
OmfCommon.eventloop.stop
|
83
|
-
end
|
84
|
-
else
|
104
|
+
if normal_shutdown_mode
|
85
105
|
shutdown
|
106
|
+
else
|
107
|
+
warn "No connection..."
|
108
|
+
OmfCommon.el.after(RETRY_INTERVAL) do
|
109
|
+
client.run
|
110
|
+
end
|
86
111
|
end
|
87
112
|
end
|
88
113
|
|
@@ -98,15 +123,21 @@ class Comm
|
|
98
123
|
info "Connecting to '#{server}' ..."
|
99
124
|
jid = "#{username}@#{server}"
|
100
125
|
client.setup(jid, password)
|
101
|
-
|
102
|
-
|
126
|
+
begin
|
127
|
+
client.run
|
128
|
+
rescue ::EventMachine::ConnectionError => e
|
129
|
+
warn "[#{e.class}] #{e}, try again..."
|
130
|
+
OmfCommon.el.after(RETRY_INTERVAL) do
|
131
|
+
connect(username, password, server)
|
132
|
+
end
|
133
|
+
end
|
103
134
|
end
|
104
135
|
|
105
136
|
# Shut down XMPP connection
|
106
137
|
def disconnect(opts = {})
|
107
138
|
# NOTE Do not clean up
|
108
|
-
info "Disconnecting ..."
|
109
139
|
@normal_shutdown_mode = true
|
140
|
+
info "Disconnecting..."
|
110
141
|
shutdown
|
111
142
|
OmfCommon::DSL::Xmpp::MPConnection.inject(Time.now.to_f, jid, 'disconnect') if OmfCommon::Measure.enabled?
|
112
143
|
end
|
@@ -228,6 +259,18 @@ class Comm
|
|
228
259
|
def default_host
|
229
260
|
@pubsub_host || "#{HOST_PREFIX}.#{jid.domain}"
|
230
261
|
end
|
262
|
+
|
263
|
+
def ping_alive
|
264
|
+
@pong = false
|
265
|
+
client.write_with_handler Blather::Stanza::Iq::Ping.new(:get, jid.domain) do |response|
|
266
|
+
@pong = true
|
267
|
+
begin
|
268
|
+
handle_error response if response.is_a? Blather::BlatherError
|
269
|
+
rescue ProtocolError => e
|
270
|
+
raise unless e.name == :feature_not_implemented
|
271
|
+
end
|
272
|
+
end
|
273
|
+
end
|
231
274
|
end
|
232
275
|
end
|
233
276
|
end
|
data/lib/omf_common/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omf_common
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.0.
|
4
|
+
version: 6.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- NICTA
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-09-
|
11
|
+
date: 2013-09-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|