stomp 1.3.0 → 1.3.1
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/CHANGELOG.rdoc +4 -0
- data/README.rdoc +2 -0
- data/lib/connection/heartbeats.rb +37 -20
- data/lib/connection/netio.rb +19 -8
- data/lib/connection/utils.rb +17 -9
- data/lib/stomp/version.rb +1 -1
- data/stomp.gemspec +2 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NDk2MTQ0MmYyZmUzZDhkYTRhZDQ5MTg1Y2EwZTk2ZDQzODNkYjIxMg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZjFjMzc4ZGNhMWEzY2ZmZDJhODk5MmZhM2FhNzZmMzY0MWUyNzJhMg==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
OTI5ZjFlNzFjMzFhNWUyZDA2YjRlYmFiZjVlNmE4ZGI4YWExZjgyZGMyOTgw
|
10
|
+
ZTY3N2ZkY2EzNmRmM2ZjYWZmYmQyMGZjZjIxMTkyNTBmY2IyZGI1NWVjYWZi
|
11
|
+
YmNjNzdiZTU2NzRmMTFiZmIyMzYyYjI4ZDZkZGQ2YzA1OGNmZDM=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NmNmZWRjMGYyYWYzNTI3NTA4ZDEwMjQxYTdlYWExZDQ5ZTBkOWIzYmYzMGUz
|
14
|
+
NDg3YjY5OTE5MzM4NWQ3OTVhZDcwZGUwZGVhYTFmNjJjY2ZjMTA2NjgyZDBi
|
15
|
+
NzEzNTBjYTA5NzY4ZTc1MmRlN2Y5MzE3ZTcwNTdkNjFiNzU0OGI=
|
data/CHANGELOG.rdoc
CHANGED
data/README.rdoc
CHANGED
@@ -12,6 +12,7 @@ An implementation of the Stomp protocol for Ruby. See:
|
|
12
12
|
|
13
13
|
See _CHANGELOG.rdoc_ for details.
|
14
14
|
|
15
|
+
* Gem version 1.3.1. Bugfix for logging.
|
15
16
|
* Gem version 1.3.0. Added ERROR frame raising as exception, added anonymous connections, miscellaneous other fixes.
|
16
17
|
* Gem version 1.2.16. Fixed Stomp::Client to expose its connection's host parameters.
|
17
18
|
* Gem version 1.2.15. Timeout cleanup, added license info to gemspec.
|
@@ -65,6 +66,7 @@ See _CHANGELOG.rdoc_ for details.
|
|
65
66
|
# correct for your environment, expect unnecessary fail overs
|
66
67
|
:connread_timeout => 0, # Timeout during CONNECT for read of CONNECTED/ERROR, secs
|
67
68
|
:tcp_nodelay => true, # Turns on the TCP_NODELAY socket option; disables Nagle's algorithm
|
69
|
+
:start_timeout => 10, # Timeout around initialization
|
68
70
|
}
|
69
71
|
|
70
72
|
# for client
|
@@ -100,7 +100,10 @@ module Stomp
|
|
100
100
|
sleep(slt)
|
101
101
|
next unless @socket # nil under some circumstances ??
|
102
102
|
curt = Time.now.to_f
|
103
|
-
|
103
|
+
|
104
|
+
if @logger && @logger.respond_to?(:on_hbfire)
|
105
|
+
@logger.on_hbfire(log_params, "send_fire", :curt => curt, :last_sleep => slt)
|
106
|
+
end
|
104
107
|
|
105
108
|
delta = curt - @ls
|
106
109
|
# Be tolerant (minus), and always do this the first time through.
|
@@ -108,9 +111,11 @@ module Stomp
|
|
108
111
|
compval = (@hbsend_interval - (@hbsend_interval/5.0)) / 1000000.0
|
109
112
|
if delta > compval || first_time
|
110
113
|
first_time = false
|
111
|
-
@logger.
|
112
|
-
|
113
|
-
|
114
|
+
if @logger && @logger.respond_to?(:on_hbfire)
|
115
|
+
@logger.on_hbfire(log_params, "send_heartbeat", :last_sleep => slt,
|
116
|
+
:curt => curt, :last_send => @ls, :delta => delta,
|
117
|
+
:compval => compval)
|
118
|
+
end
|
114
119
|
# Send a heartbeat
|
115
120
|
@transmit_semaphore.synchronize do
|
116
121
|
begin
|
@@ -121,8 +126,10 @@ module Stomp
|
|
121
126
|
@hbsend_count += 1
|
122
127
|
rescue Exception => sendex
|
123
128
|
@hb_sent = false # Set the warning flag
|
124
|
-
@logger.on_hbwrite_fail
|
125
|
-
|
129
|
+
if @logger && @logger.respond_to?(:on_hbwrite_fail)
|
130
|
+
@logger.on_hbwrite_fail(log_params, {"ticker_interval" => sleeptime,
|
131
|
+
"exception" => sendex})
|
132
|
+
end
|
126
133
|
if @hbser
|
127
134
|
raise # Re-raise if user requested this, otherwise ignore
|
128
135
|
end
|
@@ -160,12 +167,16 @@ module Stomp
|
|
160
167
|
next unless @socket # nil under some circumstances ??
|
161
168
|
rdrdy = _is_ready?(@socket)
|
162
169
|
curt = Time.now.to_f
|
163
|
-
@logger.
|
170
|
+
if @logger && @logger.respond_to?(:on_hbfire)
|
171
|
+
@logger.on_hbfire(log_params, "receive_fire", :curt => curt)
|
172
|
+
end
|
164
173
|
#
|
165
174
|
begin
|
166
175
|
delta = curt - @lr
|
167
176
|
if delta > sleeptime
|
168
|
-
@logger.on_hbfire
|
177
|
+
if @logger && @logger.respond_to?(:on_hbfire)
|
178
|
+
@logger.on_hbfire(log_params, "receive_heartbeat", {})
|
179
|
+
end
|
169
180
|
# Client code could be off doing something else (that is, no reading of
|
170
181
|
# the socket has been requested by the caller). Try to handle that case.
|
171
182
|
lock = @read_semaphore.try_lock
|
@@ -192,20 +203,24 @@ module Stomp
|
|
192
203
|
@read_semaphore.unlock # Release read lock
|
193
204
|
@hb_received = false
|
194
205
|
read_fail_count += 1
|
195
|
-
@logger.on_hbread_fail
|
196
|
-
|
197
|
-
|
198
|
-
|
206
|
+
if @logger && @logger.respond_to?(:on_hbread_fail)
|
207
|
+
@logger.on_hbread_fail(log_params, {"ticker_interval" => sleeptime,
|
208
|
+
"read_fail_count" => read_fail_count,
|
209
|
+
"lock_fail" => false,
|
210
|
+
"lock_fail_count" => lock_fail_count})
|
211
|
+
end
|
199
212
|
end
|
200
213
|
else # try_lock failed
|
201
214
|
# Shrug. Could not get lock. Client must be actually be reading.
|
202
215
|
@hb_received = false
|
203
216
|
# But notify caller if possible
|
204
217
|
lock_fail_count += 1
|
205
|
-
@logger.on_hbread_fail
|
206
|
-
|
207
|
-
|
208
|
-
|
218
|
+
if @logger && @logger.respond_to?(:on_hbread_fail)
|
219
|
+
@logger.on_hbread_fail(log_params, {"ticker_interval" => sleeptime,
|
220
|
+
"read_fail_count" => read_fail_count,
|
221
|
+
"lock_fail" => true,
|
222
|
+
"lock_fail_count" => lock_fail_count})
|
223
|
+
end
|
209
224
|
end # of the try_lock
|
210
225
|
|
211
226
|
else # delta <= sleeptime
|
@@ -214,10 +229,12 @@ module Stomp
|
|
214
229
|
lock_fail_count = 0 # reset
|
215
230
|
end # of the if delta > sleeptime
|
216
231
|
rescue Exception => recvex
|
217
|
-
@logger.on_hbread_fail
|
218
|
-
|
219
|
-
|
220
|
-
|
232
|
+
if @logger && @logger.respond_to?(:on_hbread_fail)
|
233
|
+
@logger.on_hbread_fail(log_params, {"ticker_interval" => sleeptime,
|
234
|
+
"exception" => recvex,
|
235
|
+
"read_fail_count" => read_fail_count,
|
236
|
+
"lock_fail_count" => lock_fail_count})
|
237
|
+
end
|
221
238
|
fail_hard = true
|
222
239
|
end
|
223
240
|
# Do we want to attempt a retry?
|
data/lib/connection/netio.rb
CHANGED
@@ -130,8 +130,11 @@ module Stomp
|
|
130
130
|
@failure = $!
|
131
131
|
raise unless @reliable
|
132
132
|
errstr = "transmit to #{@host} failed: #{$!}\n"
|
133
|
-
@logger.
|
134
|
-
|
133
|
+
if @logger && @logger.respond_to?(:on_miscerr)
|
134
|
+
@logger.on_miscerr(log_params, "es_trans: " + errstr)
|
135
|
+
else
|
136
|
+
$stderr.print errstr
|
137
|
+
end
|
135
138
|
# !!! This loop initiates a re-connect !!!
|
136
139
|
_reconn_prep()
|
137
140
|
end
|
@@ -198,7 +201,9 @@ module Stomp
|
|
198
201
|
def open_tcp_socket()
|
199
202
|
tcp_socket = nil
|
200
203
|
|
201
|
-
@logger.on_connecting
|
204
|
+
if @logger && @logger.respond_to?(:on_connecting)
|
205
|
+
@logger.on_connecting(log_params)
|
206
|
+
end
|
202
207
|
|
203
208
|
Timeout::timeout(@connect_timeout, Stomp::Error::SocketOpenTimeout) do
|
204
209
|
tcp_socket = TCPSocket.open(@host, @port)
|
@@ -276,7 +281,9 @@ module Stomp
|
|
276
281
|
|
277
282
|
#
|
278
283
|
ssl = nil
|
279
|
-
@logger.on_ssl_connecting
|
284
|
+
if @logger && @logger.respond_to?(:on_ssl_connecting)
|
285
|
+
@logger.on_ssl_connecting(log_params)
|
286
|
+
end
|
280
287
|
|
281
288
|
Timeout::timeout(@connect_timeout, Stomp::Error::SocketOpenTimeout) do
|
282
289
|
tcp_socket = TCPSocket.open(@host, @port)
|
@@ -297,12 +304,16 @@ module Stomp
|
|
297
304
|
end
|
298
305
|
@ssl.peer_cert = ssl.peer_cert
|
299
306
|
end
|
300
|
-
@logger.on_ssl_connected
|
307
|
+
if @logger && @logger.respond_to?(:on_ssl_connected)
|
308
|
+
@logger.on_ssl_connected(log_params)
|
309
|
+
end
|
301
310
|
ssl
|
302
311
|
rescue Exception => ex
|
303
|
-
|
304
|
-
|
305
|
-
|
312
|
+
if @logger && @logger.respond_to?(:on_ssl_connectfail)
|
313
|
+
lp = log_params.clone
|
314
|
+
lp[:ssl_exception] = ex
|
315
|
+
@logger.on_ssl_connectfail(lp)
|
316
|
+
end
|
306
317
|
#
|
307
318
|
raise # Reraise
|
308
319
|
end
|
data/lib/connection/utils.rb
CHANGED
@@ -116,7 +116,9 @@ module Stomp
|
|
116
116
|
used_socket = open_socket() # sets @closed = false if OK
|
117
117
|
# Open is complete
|
118
118
|
connect(used_socket)
|
119
|
-
@logger.on_connected
|
119
|
+
if @logger && @logger.respond_to?(:on_connected)
|
120
|
+
@logger.on_connected(log_params)
|
121
|
+
end
|
120
122
|
@connection_attempts = 0
|
121
123
|
rescue
|
122
124
|
@failure = $!
|
@@ -130,13 +132,16 @@ module Stomp
|
|
130
132
|
# b) should never be retried
|
131
133
|
raise if @failure.is_a?(Stomp::Error::ProtocolError11p)
|
132
134
|
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
135
|
+
if @logger && @logger.respond_to?(:on_connectfail)
|
136
|
+
# on_connectfail may raise
|
137
|
+
begin
|
138
|
+
@logger.on_connectfail(log_params)
|
139
|
+
rescue Exception => aex
|
140
|
+
raise if aex.is_a?(Stomp::Error::LoggerConnectionError)
|
141
|
+
end
|
142
|
+
else
|
143
|
+
$stderr.print "connect to #{@host} failed: #{$!} will retry(##{@connection_attempts}) in #{@reconnect_delay}\n"
|
138
144
|
end
|
139
|
-
$stderr.print "connect to #{@host} failed: #{$!} will retry(##{@connection_attempts}) in #{@reconnect_delay}\n"
|
140
145
|
raise Stomp::Error::MaxReconnectAttempts if max_reconnect_attempts?
|
141
146
|
|
142
147
|
sleep(@reconnect_delay)
|
@@ -232,8 +237,11 @@ module Stomp
|
|
232
237
|
@failure = $!
|
233
238
|
raise unless @reliable
|
234
239
|
errstr = "receive failed: #{$!}"
|
235
|
-
@logger.
|
236
|
-
|
240
|
+
if @logger && @logger.respond_to?(:on_miscerr)
|
241
|
+
@logger.on_miscerr(log_params, "es_oldrecv: " + errstr)
|
242
|
+
else
|
243
|
+
$stderr.print errstr
|
244
|
+
end
|
237
245
|
|
238
246
|
# !!! This initiates a re-connect !!!
|
239
247
|
_reconn_prep()
|
data/lib/stomp/version.rb
CHANGED
data/stomp.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "stomp"
|
8
|
-
s.version = "1.3.
|
8
|
+
s.version = "1.3.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Brian McCallister", "Marius Mathiesen", "Thiago Morello", "Guy M. Allard"]
|
12
|
-
s.date = "2013-
|
12
|
+
s.date = "2013-10-02"
|
13
13
|
s.description = "Ruby client for the Stomp messaging protocol. Note that this gem is no longer supported on rubyforge."
|
14
14
|
s.email = ["brianm@apache.org", "marius@stones.com", "morellon@gmail.com", "allard.guy.m@gmail.com"]
|
15
15
|
s.executables = ["catstomp", "stompcat"]
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stomp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian McCallister
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2013-
|
14
|
+
date: 2013-10-02 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rspec
|