omf_common 6.0.6 → 6.0.7
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 +55 -26
- data/lib/omf_common/version.rb +1 -1
- data/omf_common.gemspec +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
OTdlZmJkZTY0ODNlZWZhNzQ2N2Y3NWYyYjMwNjBiOTRhYzFjNGE0NQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MDkzNTdhZWMyNGFmNGYxNTIxZjAwM2RkZjY0NTI1ODk2YjQ0MWEzOQ==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MGJjYmQwOTIxODViYjZhYjg0YTBlMDI5MzkxODc1MTUxMDgwNWRkMTdiMWNi
|
10
|
+
ZTNiOGVlY2Y4N2QwZjQ3ZjQyN2NkY2I1YWUxOGUxMjA1NGUwZjQzNTVkNmJh
|
11
|
+
ZDE4NTBiMGMzYjU0ODA5NjY3MmM5ZmUwNjMzOWJlMjVmNmQ4ODM=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NjQ5NWI2YmY2MTFkNWQzM2U4ZjU3YmQ2NjBjOTFjZmEyNDJjOThiZGExZDcx
|
14
|
+
NDg3ZTllN2EwOGUzY2NmYTE3OGUzN2RkODcxZDM5YjNjZjhlOWRmYmYxZDM0
|
15
|
+
MmQ2NTMxZDY1NTAzMjcwZDlmZjdkZjc1NTY0YWJmZmFiZWE5YWQ=
|
@@ -3,12 +3,14 @@
|
|
3
3
|
# You should find a copy of the License in LICENSE.TXT or at http://opensource.org/licenses/MIT.
|
4
4
|
# By downloading or using this software you accept the terms and the liability disclaimer in the License.
|
5
5
|
|
6
|
+
require 'blather'
|
6
7
|
require 'blather/client/dsl'
|
7
8
|
|
8
9
|
require 'omf_common/comm/xmpp/xmpp_mp'
|
9
10
|
require 'omf_common/comm/xmpp/topic'
|
10
11
|
require 'uri'
|
11
12
|
require 'socket'
|
13
|
+
require 'monitor'
|
12
14
|
|
13
15
|
module Blather
|
14
16
|
class Stream
|
@@ -20,6 +22,12 @@ module Blather
|
|
20
22
|
@client.unbind
|
21
23
|
end
|
22
24
|
end
|
25
|
+
|
26
|
+
class Client
|
27
|
+
def state
|
28
|
+
@state
|
29
|
+
end
|
30
|
+
end
|
23
31
|
end
|
24
32
|
|
25
33
|
module OmfCommon
|
@@ -31,8 +39,8 @@ class Comm
|
|
31
39
|
attr_accessor :published_messages, :normal_shutdown_mode, :retry_counter
|
32
40
|
|
33
41
|
HOST_PREFIX = 'pubsub'
|
34
|
-
RETRY_INTERVAL =
|
35
|
-
PING_INTERVAL =
|
42
|
+
RETRY_INTERVAL = 180
|
43
|
+
PING_INTERVAL = 1800
|
36
44
|
|
37
45
|
PUBSUB_CONFIGURE = Blather::Stanza::X.new({
|
38
46
|
:type => :submit,
|
@@ -61,6 +69,8 @@ class Comm
|
|
61
69
|
# Set up XMPP options and start the Eventmachine, connect to XMPP server
|
62
70
|
#
|
63
71
|
def init(opts = {})
|
72
|
+
@lock = Monitor.new
|
73
|
+
|
64
74
|
@pubsub_host = opts[:pubsub_domain]
|
65
75
|
if opts[:url]
|
66
76
|
url = URI(opts[:url])
|
@@ -79,34 +89,56 @@ class Comm
|
|
79
89
|
|
80
90
|
@retry_counter = 0
|
81
91
|
@normal_shutdown_mode = false
|
82
|
-
@pong = true
|
83
92
|
|
93
|
+
username.downcase!
|
94
|
+
jid = "#{username}@#{server}"
|
95
|
+
client.setup(jid, password)
|
84
96
|
connect(username, password, server)
|
85
97
|
|
86
98
|
when_ready do
|
87
|
-
@
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
99
|
+
if @not_initial_connection
|
100
|
+
info "Reconnected"
|
101
|
+
else
|
102
|
+
info "Connected"
|
103
|
+
@cbks[:connected].each { |cbk| cbk.call(self) }
|
104
|
+
# It will be reconnection after this
|
105
|
+
@lock.synchronize do
|
93
106
|
@not_initial_connection = true
|
94
|
-
|
95
|
-
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
@lock.synchronize do
|
111
|
+
@pong = true
|
112
|
+
@ping_alive_timer = OmfCommon.el.every(PING_INTERVAL) do
|
113
|
+
if @pong
|
114
|
+
@lock.synchronize do
|
115
|
+
@pong = false # Reset @pong
|
116
|
+
end
|
117
|
+
ping_alive
|
118
|
+
else
|
119
|
+
warn "No PONG. No connection..."
|
120
|
+
@lock.synchronize do
|
121
|
+
@ping_alive_timer.cancel
|
122
|
+
end
|
123
|
+
connect(username, password, server)
|
96
124
|
end
|
97
125
|
end
|
98
126
|
end
|
99
|
-
info "Reconnected" if @not_initial_connection
|
100
|
-
@cbks[:connected].each { |cbk| cbk.call(self) } unless @not_initial_connection
|
101
127
|
end
|
102
128
|
|
103
129
|
disconnected do
|
130
|
+
@lock.synchronize do
|
131
|
+
@pong = false # Reset @pong
|
132
|
+
@ping_alive_timer && @ping_alive_timer.cancel
|
133
|
+
end
|
134
|
+
|
104
135
|
if normal_shutdown_mode
|
105
136
|
shutdown
|
106
137
|
else
|
107
|
-
warn "
|
108
|
-
|
109
|
-
|
138
|
+
warn "Disconnected... Last known state: #{client.state}"
|
139
|
+
retry_interval = client.state == :initializing ? 0 : RETRY_INTERVAL
|
140
|
+
OmfCommon.el.after(retry_interval) do
|
141
|
+
connect(username, password, server)
|
110
142
|
end
|
111
143
|
end
|
112
144
|
end
|
@@ -121,11 +153,9 @@ class Comm
|
|
121
153
|
#
|
122
154
|
def connect(username, password, server)
|
123
155
|
info "Connecting to '#{server}' ..."
|
124
|
-
jid = "#{username}@#{server}"
|
125
|
-
client.setup(jid, password)
|
126
156
|
begin
|
127
157
|
client.run
|
128
|
-
rescue ::EventMachine::ConnectionError => e
|
158
|
+
rescue ::EventMachine::ConnectionError, Blather::Stream::ConnectionTimeout, Blather::Stream::NoConnection, Blather::Stream::ConnectionFailed => e
|
129
159
|
warn "[#{e.class}] #{e}, try again..."
|
130
160
|
OmfCommon.el.after(RETRY_INTERVAL) do
|
131
161
|
connect(username, password, server)
|
@@ -136,7 +166,9 @@ class Comm
|
|
136
166
|
# Shut down XMPP connection
|
137
167
|
def disconnect(opts = {})
|
138
168
|
# NOTE Do not clean up
|
139
|
-
@
|
169
|
+
@lock.synchronize do
|
170
|
+
@normal_shutdown_mode = true
|
171
|
+
end
|
140
172
|
info "Disconnecting..."
|
141
173
|
shutdown
|
142
174
|
OmfCommon::DSL::Xmpp::MPConnection.inject(Time.now.to_f, jid, 'disconnect') if OmfCommon::Measure.enabled?
|
@@ -261,13 +293,10 @@ class Comm
|
|
261
293
|
end
|
262
294
|
|
263
295
|
def ping_alive
|
264
|
-
@pong = false
|
265
296
|
client.write_with_handler Blather::Stanza::Iq::Ping.new(:get, jid.domain) do |response|
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
rescue ProtocolError => e
|
270
|
-
raise unless e.name == :feature_not_implemented
|
297
|
+
info response
|
298
|
+
@lock.synchronize do
|
299
|
+
@pong = true
|
271
300
|
end
|
272
301
|
end
|
273
302
|
end
|
data/lib/omf_common/version.rb
CHANGED
data/omf_common.gemspec
CHANGED
@@ -28,7 +28,7 @@ Gem::Specification.new do |s|
|
|
28
28
|
s.add_development_dependency "mocha"
|
29
29
|
|
30
30
|
s.add_runtime_dependency "eventmachine", "= 1.0.3"
|
31
|
-
s.add_runtime_dependency "blather", "= 0.8.
|
31
|
+
s.add_runtime_dependency "blather", "= 0.8.7"
|
32
32
|
s.add_runtime_dependency "logging", "~> 1.7.1"
|
33
33
|
s.add_runtime_dependency "hashie", "~> 1.2.0"
|
34
34
|
s.add_runtime_dependency "oml4r", "~> 2.9.5"
|
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.7
|
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-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
@@ -100,14 +100,14 @@ dependencies:
|
|
100
100
|
requirements:
|
101
101
|
- - '='
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: 0.8.
|
103
|
+
version: 0.8.7
|
104
104
|
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - '='
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: 0.8.
|
110
|
+
version: 0.8.7
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: logging
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|