stomp 1.2.14 → 1.2.16
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/CHANGELOG.rdoc +10 -0
- data/README.rdoc +3 -0
- data/Rakefile +1 -0
- data/lib/client/utils.rb +27 -32
- data/lib/connection/netio.rb +44 -21
- data/lib/connection/utils.rb +2 -2
- data/lib/stomp/client.rb +9 -22
- data/lib/stomp/connection.rb +7 -1
- data/lib/stomp/errors.rb +8 -0
- data/lib/stomp/version.rb +1 -1
- data/spec/client_spec.rb +72 -41
- data/spec/connection_spec.rb +5 -2
- data/stomp.gemspec +2 -1
- metadata +5 -8
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
MDM0Njc0MjJhMzYzOTBjZGQ0NGZiZTM4MDA2MzRlNzgwZmE2M2JmZg==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
YmY5YmNlNTFkMTEwMzFlMDRjYWJlNWQ4MmRjZWEwNWJmNjU3YTZjZA==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
ZmRmZWI0MGUyMDZjNDM2Yjc3YjY5ZmRiODQwZmNhZDIwYmNiOGY0NDczMWI2
|
10
|
+
Nzg2NWNiMWQ4YmY4YWQ5MzRhNjAwOTZlYWUwZDU4ZDhhYWNkMmJmYmI1MDFl
|
11
|
+
ZDFkOWNmMDdjZTgxZmQ3NmZkYTk5YmYzMDk2ZTljYmE4ZjhlOTk=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
MjQ5YWQ3MjYwMjAyYWVkNDRiY2Q1ZGUxYTU0MzFhOTE1NGNlYjU1MGRjN2I3
|
14
|
+
NzU4ZDJkNmZiYTZkNjU3YmQ0MTQxOGUzM2ZhMDIxNmY4NGYwNDhjYTcxNGQ5
|
15
|
+
MWVmNzI5ZjIwMjEwN2E2ZjM0MzBkM2RmZmEwMjk3NTNiNWM2MzM=
|
data/CHANGELOG.rdoc
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
== 1.2.16 20130812
|
2
|
+
|
3
|
+
* Stomp::Client's should expose connection's host params
|
4
|
+
|
5
|
+
== 1.2.15 20130809
|
6
|
+
|
7
|
+
* Add user-specified timeout for initial CONNECTED/ERROR frame read.
|
8
|
+
* Eliminate dup Timeout::timeout in ssl connect
|
9
|
+
* Add license information to gemspec (#69)
|
10
|
+
|
1
11
|
== 1.2.14 20130819
|
2
12
|
|
3
13
|
* Version bump (1.2.13 release had Stomp::Version of 1.1.12.)
|
data/README.rdoc
CHANGED
@@ -12,6 +12,8 @@ An implementation of the Stomp protocol for Ruby. See:
|
|
12
12
|
|
13
13
|
See _CHANGELOG.rdoc_ for details.
|
14
14
|
|
15
|
+
* Gem version 1.2.16. Fixed Stomp::Client to expose its connection's host parameters.
|
16
|
+
* Gem version 1.2.15. Timeout cleanup, added license info to gemspec.
|
15
17
|
* Gem version 1.2.14. Cleanup.
|
16
18
|
* Gem version 1.2.13. Stomp::Client#unreceive max_redeliveries fix.
|
17
19
|
* Gem version 1.2.12. Miscellaneous issue fixes and cleanup.
|
@@ -60,6 +62,7 @@ See _CHANGELOG.rdoc_ for details.
|
|
60
62
|
:fast_hbs_adjust => 0.0, # Fast heartbeat senders sleep adjustment, seconds, needed ...
|
61
63
|
# For fast heartbeat senders. 'fast' == YMMV. If not
|
62
64
|
# correct for your environment, expect unnecessary fail overs
|
65
|
+
:connread_timeout => 0, # Timeout during CONNECT for read of CONNECTED/ERROR, secs
|
63
66
|
}
|
64
67
|
|
65
68
|
# for client
|
data/Rakefile
CHANGED
@@ -30,6 +30,7 @@ begin
|
|
30
30
|
gem.name = "stomp"
|
31
31
|
gem.version = Stomp::Version::STRING
|
32
32
|
gem.summary = %Q{Ruby client for the Stomp messaging protocol}
|
33
|
+
gem.license = "Apache 2.0"
|
33
34
|
gem.description = %Q{Ruby client for the Stomp messaging protocol. Note that this gem is no longer supported on rubyforge.}
|
34
35
|
gem.email = ["brianm@apache.org", 'marius@stones.com', 'morellon@gmail.com',
|
35
36
|
'allard.guy.m@gmail.com' ]
|
data/lib/client/utils.rb
CHANGED
@@ -13,25 +13,20 @@ module Stomp
|
|
13
13
|
return false unless params.is_a?(Hash)
|
14
14
|
|
15
15
|
@parameters = params
|
16
|
-
|
17
|
-
|
18
|
-
@passcode = first_host[:passcode]
|
19
|
-
@host = first_host[:host]
|
20
|
-
@port = first_host[:port] || Connection::default_port(first_host[:ssl])
|
21
|
-
@reliable = true
|
16
|
+
@parameters[:reliable] = true
|
17
|
+
|
22
18
|
true
|
23
19
|
end
|
24
20
|
|
25
21
|
def parse_stomp_url(login)
|
26
22
|
regexp = /^stomp:\/\/#{URL_REPAT}/
|
27
|
-
return false unless
|
28
|
-
|
29
|
-
@login = $3 || ""
|
30
|
-
@passcode = $4 || ""
|
31
|
-
@host = $5
|
32
|
-
@port = $6.to_i
|
23
|
+
return false unless url = regexp.match(login)
|
33
24
|
|
34
|
-
@
|
25
|
+
@parameters = { :reliable => false,
|
26
|
+
:hosts => [ { :login => url[3] || "",
|
27
|
+
:passcode => url[4] || "",
|
28
|
+
:host => url[5],
|
29
|
+
:port => url[6].to_i} ] }
|
35
30
|
true
|
36
31
|
end
|
37
32
|
|
@@ -40,31 +35,28 @@ module Stomp
|
|
40
35
|
rval = nil
|
41
36
|
if md = FAILOVER_REGEX.match(login)
|
42
37
|
finhosts = parse_hosts(login)
|
43
|
-
|
44
|
-
@login = finhosts[0][:login] || ""
|
45
|
-
@passcode = finhosts[0][:passcode] || ""
|
46
|
-
@host = finhosts[0][:host] || ""
|
47
|
-
@port = finhosts[0][:port] || ""
|
48
|
-
#
|
38
|
+
|
49
39
|
options = {}
|
50
|
-
if md_last = md[
|
40
|
+
if md_last = md[-1]
|
51
41
|
parts = md_last.split(/&|=/)
|
52
|
-
raise Stomp::Error::MalformedFailoverOptionsError unless (parts.size % 2 ) == 0
|
42
|
+
raise Stomp::Error::MalformedFailoverOptionsError unless ( parts.size % 2 ) == 0
|
53
43
|
options = Hash[*parts]
|
54
44
|
end
|
55
|
-
|
56
|
-
@
|
45
|
+
|
46
|
+
@parameters = {:hosts => finhosts}.merge!(filter_options(options))
|
47
|
+
|
48
|
+
@parameters[:reliable] = true
|
57
49
|
rval = true
|
58
50
|
end
|
59
51
|
rval
|
60
52
|
end
|
61
53
|
|
62
54
|
def parse_positional_params(login, passcode, host, port, reliable)
|
63
|
-
@
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
55
|
+
@parameters = { :reliable => reliable,
|
56
|
+
:hosts => [ { :login => login,
|
57
|
+
:passcode => passcode,
|
58
|
+
:host => host,
|
59
|
+
:port => port.to_i } ] }
|
68
60
|
true
|
69
61
|
end
|
70
62
|
|
@@ -108,9 +100,12 @@ end
|
|
108
100
|
|
109
101
|
# A very basic check of required arguments.
|
110
102
|
def check_arguments!()
|
111
|
-
|
112
|
-
|
113
|
-
raise ArgumentError
|
103
|
+
first_host = @parameters && @parameters[:hosts] && @parameters[:hosts].first
|
104
|
+
|
105
|
+
raise ArgumentError if first_host.nil?
|
106
|
+
raise ArgumentError if first_host[:host].nil? || first_host[:host].empty?
|
107
|
+
raise ArgumentError if first_host[:port].nil? || first_host[:port] == '' || first_host[:port] < 1 || first_host[:port] > 65535
|
108
|
+
raise ArgumentError unless @parameters[:reliable].is_a?(TrueClass) || @parameters[:reliable].is_a?(FalseClass)
|
114
109
|
end
|
115
110
|
|
116
111
|
# filter_options returns a new Hash of filtered options.
|
@@ -149,7 +144,7 @@ end
|
|
149
144
|
while true
|
150
145
|
message = @connection.receive
|
151
146
|
# AMQ specific behavior
|
152
|
-
if message.nil? && (!@reliable)
|
147
|
+
if message.nil? && (!@parameters[:reliable])
|
153
148
|
raise Stomp::Error::NilMessageError
|
154
149
|
end
|
155
150
|
if message # message can be nil on rapid AMQ stop / start sequences
|
data/lib/connection/netio.rb
CHANGED
@@ -12,28 +12,24 @@ module Stomp
|
|
12
12
|
private
|
13
13
|
|
14
14
|
# Really read from the wire.
|
15
|
-
def _receive(read_socket)
|
15
|
+
def _receive(read_socket, connread = false)
|
16
16
|
@read_semaphore.synchronize do
|
17
|
-
line =
|
18
|
-
if
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
line = read_socket.gets # Data from wire
|
23
|
-
break unless line == "\n"
|
24
|
-
line = ''
|
17
|
+
line = nil
|
18
|
+
if connread
|
19
|
+
begin
|
20
|
+
Timeout::timeout(@connread_timeout, Stomp::Error::ConnectReadTimeout) do
|
21
|
+
line = _init_line_read(read_socket)
|
25
22
|
end
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
line = read_socket.gets # Data from wire
|
32
|
-
break unless line == "\n"
|
33
|
-
line = ''
|
34
|
-
@lr = Time.now.to_f
|
23
|
+
rescue Stomp::Error::ConnectReadTimeout => ex
|
24
|
+
if @reliable
|
25
|
+
_reconn_prep()
|
26
|
+
end
|
27
|
+
raise ex
|
35
28
|
end
|
29
|
+
else
|
30
|
+
line = _init_line_read(read_socket)
|
36
31
|
end
|
32
|
+
#
|
37
33
|
return nil if line.nil?
|
38
34
|
# p [ "wiredatain_01", line ]
|
39
35
|
line = _normalize_line_end(line) if @protocol >= Stomp::SPL_12
|
@@ -290,7 +286,8 @@ module Stomp
|
|
290
286
|
end
|
291
287
|
|
292
288
|
Timeout::timeout(@connect_timeout, Stomp::Error::SocketOpenTimeout) do
|
293
|
-
|
289
|
+
tcp_socket = TCPSocket.open(@host, @port)
|
290
|
+
ssl = OpenSSL::SSL::SSLSocket.new(tcp_socket, ctx)
|
294
291
|
ssl.hostname = @host if ssl.respond_to? :hostname=
|
295
292
|
ssl.sync_close = true # Sync ssl close with underlying TCP socket
|
296
293
|
ssl.connect
|
@@ -345,7 +342,9 @@ module Stomp
|
|
345
342
|
|
346
343
|
@closed = false
|
347
344
|
if @parameters # nil in some rspec tests
|
348
|
-
@reconnect_delay
|
345
|
+
unless @reconnect_delay
|
346
|
+
@reconnect_delay = @parameters[:initial_reconnect_delay] ? @parameters[:initial_reconnect_delay] : 0.01
|
347
|
+
end
|
349
348
|
end
|
350
349
|
# Use keepalive
|
351
350
|
used_socket.setsockopt(Socket::SOL_SOCKET, Socket::SO_KEEPALIVE, true)
|
@@ -364,7 +363,7 @@ module Stomp
|
|
364
363
|
else
|
365
364
|
_transmit(used_socket, Stomp::CMD_CONNECT, headers)
|
366
365
|
end
|
367
|
-
@connection_frame = _receive(used_socket)
|
366
|
+
@connection_frame = _receive(used_socket, true)
|
368
367
|
_post_connect
|
369
368
|
@disconnect_receipt = nil
|
370
369
|
@session = @connection_frame.headers["session"] if @connection_frame
|
@@ -374,6 +373,30 @@ module Stomp
|
|
374
373
|
}
|
375
374
|
end
|
376
375
|
|
376
|
+
def _init_line_read(read_socket)
|
377
|
+
line = ''
|
378
|
+
if @protocol == Stomp::SPL_10 || (@protocol >= Stomp::SPL_11 && !@hbr)
|
379
|
+
if @jruby
|
380
|
+
# Handle JRuby specific behavior.
|
381
|
+
while true
|
382
|
+
line = read_socket.gets # Data from wire
|
383
|
+
break unless line == "\n"
|
384
|
+
line = ''
|
385
|
+
end
|
386
|
+
else
|
387
|
+
line = read_socket.gets # The old way
|
388
|
+
end
|
389
|
+
else # We are >= 1.1 *AND* receiving heartbeats.
|
390
|
+
while true
|
391
|
+
line = read_socket.gets # Data from wire
|
392
|
+
break unless line == "\n"
|
393
|
+
line = ''
|
394
|
+
@lr = Time.now.to_f
|
395
|
+
end
|
396
|
+
end
|
397
|
+
line
|
398
|
+
end
|
399
|
+
|
377
400
|
end # class Connection
|
378
401
|
|
379
402
|
end # module Stomp
|
data/lib/connection/utils.rb
CHANGED
@@ -182,6 +182,7 @@ module Stomp
|
|
182
182
|
:max_hbread_fails => 0,
|
183
183
|
:max_hbrlck_fails => 0,
|
184
184
|
:fast_hbs_adjust => 0.0,
|
185
|
+
:connread_timeout => 0,
|
185
186
|
}
|
186
187
|
|
187
188
|
res_params = default_params.merge(params)
|
@@ -191,7 +192,7 @@ module Stomp
|
|
191
192
|
return res_params
|
192
193
|
end
|
193
194
|
|
194
|
-
# change_host selects the next host for
|
195
|
+
# change_host selects the next host for retries.
|
195
196
|
def change_host
|
196
197
|
@parameters[:hosts] = @parameters[:hosts].sort_by { rand } if @parameters[:randomize]
|
197
198
|
|
@@ -204,7 +205,6 @@ module Stomp
|
|
204
205
|
@port = current_host[:port] || Connection::default_port(@ssl)
|
205
206
|
@login = current_host[:login] || ""
|
206
207
|
@passcode = current_host[:passcode] || ""
|
207
|
-
|
208
208
|
end
|
209
209
|
|
210
210
|
# max_reconnect_attempts? returns nil or the number of maximum reconnect
|
data/lib/stomp/client.rb
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'thread'
|
4
4
|
require 'digest/sha1'
|
5
|
+
require 'forwardable'
|
5
6
|
|
6
7
|
module Stomp
|
7
8
|
|
@@ -11,25 +12,14 @@ module Stomp
|
|
11
12
|
# Receives all happen in one thread, so consider not doing much processing
|
12
13
|
# in that thread if you have much message volume.
|
13
14
|
class Client
|
15
|
+
extend Forwardable
|
14
16
|
|
15
|
-
#
|
16
|
-
attr_reader :login
|
17
|
-
|
18
|
-
# The login credentials used by the client.
|
19
|
-
attr_reader :passcode
|
20
|
-
|
21
|
-
# The Stomp host specified by the client.
|
22
|
-
attr_reader :host
|
23
|
-
|
24
|
-
# The Stomp host's listening port.
|
25
|
-
attr_reader :port
|
26
|
-
|
27
|
-
# Is this connection reliable?
|
28
|
-
attr_reader :reliable
|
29
|
-
|
30
|
-
# Parameters Hash, possibly nil for a non-hashed connect.
|
17
|
+
# Parameters hash
|
31
18
|
attr_reader :parameters
|
32
19
|
|
20
|
+
def_delegators :@connection, :login, :passcode, :port, :host, :ssl
|
21
|
+
def_delegator :@parameters, :reliable
|
22
|
+
|
33
23
|
# A new Client object can be initialized using three forms:
|
34
24
|
#
|
35
25
|
# Hash (this is the recommended Client initialization method):
|
@@ -58,6 +48,7 @@ module Stomp
|
|
58
48
|
# :max_hbread_fails => 0,
|
59
49
|
# :max_hbrlck_fails => 0,
|
60
50
|
# :fast_hbs_adjust => 0.0,
|
51
|
+
# :connread_timeout => 0,
|
61
52
|
# }
|
62
53
|
#
|
63
54
|
# e.g. c = Stomp::Client.new(hash)
|
@@ -99,12 +90,8 @@ module Stomp
|
|
99
90
|
end
|
100
91
|
|
101
92
|
def create_connection(autoflush)
|
102
|
-
|
103
|
-
|
104
|
-
else
|
105
|
-
@connection = Connection.new(@login, @passcode, @host, @port, @reliable)
|
106
|
-
@connection.autoflush = autoflush
|
107
|
-
end
|
93
|
+
@connection = Connection.new(@parameters)
|
94
|
+
@connection.autoflush = autoflush
|
108
95
|
end
|
109
96
|
private :create_connection
|
110
97
|
|
data/lib/stomp/connection.rb
CHANGED
@@ -38,6 +38,9 @@ module Stomp
|
|
38
38
|
# dynamically by calling code.
|
39
39
|
attr_accessor :autoflush
|
40
40
|
|
41
|
+
# Currently-connected host and port
|
42
|
+
attr_reader :host, :port
|
43
|
+
|
41
44
|
# default_port returns the default port used by the gem for TCP or SSL.
|
42
45
|
def self.default_port(ssl)
|
43
46
|
ssl ? 61612 : 61613
|
@@ -71,6 +74,7 @@ module Stomp
|
|
71
74
|
# :max_hbread_fails => 0,
|
72
75
|
# :max_hbrlck_fails => 0,
|
73
76
|
# :fast_hbs_adjust => 0.0,
|
77
|
+
# :connread_timeout => 0,
|
74
78
|
# }
|
75
79
|
#
|
76
80
|
# e.g. c = Stomp::Connection.new(hash)
|
@@ -117,7 +121,8 @@ module Stomp
|
|
117
121
|
@usecrlf = false # If true, use \r\n as line ends (1.2 only)
|
118
122
|
@max_hbread_fails = 0 # 0 means never retry for HB read failures
|
119
123
|
@max_hbrlck_fails = 0 # 0 means never retry for HB read lock failures
|
120
|
-
@fast_hbs_adjust = 0.0 # Fast heartbeat senders sleep adjustment
|
124
|
+
@fast_hbs_adjust = 0.0 # Fast heartbeat senders sleep adjustment
|
125
|
+
@connread_timeout = 0 # Connect read CONNECTED/ERROR timeout
|
121
126
|
warn "login looks like a URL, do you have the correct parameters?" if @login =~ /:\/\//
|
122
127
|
end
|
123
128
|
|
@@ -153,6 +158,7 @@ module Stomp
|
|
153
158
|
@max_hbread_fails = @parameters[:max_hbread_fails]
|
154
159
|
@max_hbrlck_fails = @parameters[:max_hbrlck_fails]
|
155
160
|
@fast_hbs_adjust = @parameters[:fast_hbs_adjust]
|
161
|
+
@connread_timeout = @parameters[:connread_timeout]
|
156
162
|
#sets the first host to connect
|
157
163
|
change_host
|
158
164
|
end
|
data/lib/stomp/errors.rb
CHANGED
@@ -213,6 +213,14 @@ module Stomp
|
|
213
213
|
end
|
214
214
|
end
|
215
215
|
|
216
|
+
# ConnectReadTimeout is raised if:
|
217
|
+
# * A read for CONNECTED/ERROR is untimely
|
218
|
+
class ConnectReadTimeout < RuntimeError
|
219
|
+
def message
|
220
|
+
"Connect read for CONNECTED/ERROR timeout"
|
221
|
+
end
|
222
|
+
end
|
223
|
+
|
216
224
|
end # module Error
|
217
225
|
|
218
226
|
end # module Stomp
|
data/lib/stomp/version.rb
CHANGED
data/spec/client_spec.rb
CHANGED
@@ -7,8 +7,8 @@ require 'client_shared_examples'
|
|
7
7
|
describe Stomp::Client do
|
8
8
|
|
9
9
|
before(:each) do
|
10
|
-
@mock_connection =
|
11
|
-
Stomp::Connection.stub
|
10
|
+
@mock_connection = double('connection', :autoflush= => true)
|
11
|
+
Stomp::Connection.stub(:new).and_return(@mock_connection)
|
12
12
|
end
|
13
13
|
|
14
14
|
describe "(created with no params)" do
|
@@ -33,6 +33,29 @@ describe Stomp::Client do
|
|
33
33
|
|
34
34
|
end
|
35
35
|
|
36
|
+
describe 'delegated params' do
|
37
|
+
before :each do
|
38
|
+
@mock_connection = double('connection', :autoflush= => true,
|
39
|
+
:login => 'dummy login',
|
40
|
+
:passcode => 'dummy passcode',
|
41
|
+
:port => 12345,
|
42
|
+
:host => 'dummy host',
|
43
|
+
:ssl => 'dummy ssl')
|
44
|
+
Stomp::Connection.stub(:new).and_return(@mock_connection)
|
45
|
+
@client = Stomp::Client.new
|
46
|
+
end
|
47
|
+
|
48
|
+
describe 'it should delegate parameters to its connection' do
|
49
|
+
subject { @client }
|
50
|
+
|
51
|
+
its(:login) { should eql 'dummy login' }
|
52
|
+
its(:passcode) { should eql 'dummy passcode' }
|
53
|
+
its(:port) { should eql 12345 }
|
54
|
+
its(:host) { should eql 'dummy host' }
|
55
|
+
its(:ssl) { should eql 'dummy ssl' }
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
36
59
|
describe "(autoflush)" do
|
37
60
|
it "should delegate to the connection for accessing the autoflush property" do
|
38
61
|
@mock_connection.should_receive(:autoflush)
|
@@ -98,17 +121,17 @@ describe Stomp::Client do
|
|
98
121
|
|
99
122
|
|
100
123
|
describe "(created with positional params)" do
|
101
|
-
|
102
124
|
before(:each) do
|
103
125
|
@client = Stomp::Client.new('testlogin', 'testpassword', 'localhost', '12345', false)
|
104
126
|
end
|
105
127
|
|
106
128
|
it "should properly parse the URL provided" do
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
129
|
+
Stomp::Connection.should_receive(:new).with(:hosts => [{:login => 'testlogin',
|
130
|
+
:passcode => 'testpassword',
|
131
|
+
:host => 'localhost',
|
132
|
+
:port => 12345}],
|
133
|
+
:reliable => false)
|
134
|
+
Stomp::Client.new('testlogin', 'testpassword', 'localhost', '12345', false)
|
112
135
|
end
|
113
136
|
|
114
137
|
it_should_behave_like "standard Client"
|
@@ -122,11 +145,12 @@ describe Stomp::Client do
|
|
122
145
|
end
|
123
146
|
|
124
147
|
it "should properly parse the URL provided" do
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
148
|
+
Stomp::Connection.should_receive(:new).with(:hosts => [{:login => '',
|
149
|
+
:passcode => '',
|
150
|
+
:host => 'foobar',
|
151
|
+
:port => 12345}],
|
152
|
+
:reliable => false)
|
153
|
+
Stomp::Client.new('stomp://foobar:12345')
|
130
154
|
end
|
131
155
|
|
132
156
|
it_should_behave_like "standard Client"
|
@@ -140,11 +164,12 @@ describe Stomp::Client do
|
|
140
164
|
end
|
141
165
|
|
142
166
|
it "should properly parse the URL provided" do
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
167
|
+
Stomp::Connection.should_receive(:new).with(:hosts => [{:login => '',
|
168
|
+
:passcode => '',
|
169
|
+
:host => 'foo-bar',
|
170
|
+
:port => 12345}],
|
171
|
+
:reliable => false)
|
172
|
+
Stomp::Client.new('stomp://foo-bar:12345')
|
148
173
|
end
|
149
174
|
|
150
175
|
it_should_behave_like "standard Client"
|
@@ -158,11 +183,12 @@ describe Stomp::Client do
|
|
158
183
|
end
|
159
184
|
|
160
185
|
it "should properly parse the URL provided" do
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
186
|
+
Stomp::Connection.should_receive(:new).with(:hosts => [{:login => 'test-login',
|
187
|
+
:passcode => 'testpasscode',
|
188
|
+
:host => 'foobar',
|
189
|
+
:port => 12345}],
|
190
|
+
:reliable => false)
|
191
|
+
Stomp::Client.new('stomp://test-login:testpasscode@foobar:12345')
|
166
192
|
end
|
167
193
|
|
168
194
|
it_should_behave_like "standard Client"
|
@@ -176,11 +202,12 @@ describe Stomp::Client do
|
|
176
202
|
end
|
177
203
|
|
178
204
|
it "should properly parse the URL provided" do
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
205
|
+
Stomp::Connection.should_receive(:new).with(:hosts => [{:login => 'test-login',
|
206
|
+
:passcode => 'testpasscode',
|
207
|
+
:host => 'foo-bar',
|
208
|
+
:port => 12345}],
|
209
|
+
:reliable => false)
|
210
|
+
Stomp::Client.new('stomp://test-login:testpasscode@foo-bar:12345')
|
184
211
|
end
|
185
212
|
|
186
213
|
it_should_behave_like "standard Client"
|
@@ -197,11 +224,12 @@ describe Stomp::Client do
|
|
197
224
|
end
|
198
225
|
|
199
226
|
it "should properly parse the URL provided" do
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
227
|
+
Stomp::Connection.should_receive(:new).with(:hosts => [{:login => '',
|
228
|
+
:passcode => '',
|
229
|
+
:host => 'host.foobar.com',
|
230
|
+
:port => 12345}],
|
231
|
+
:reliable => false)
|
232
|
+
Stomp::Client.new('stomp://host.foobar.com:12345')
|
205
233
|
end
|
206
234
|
|
207
235
|
it_should_behave_like "standard Client"
|
@@ -215,11 +243,12 @@ describe Stomp::Client do
|
|
215
243
|
end
|
216
244
|
|
217
245
|
it "should properly parse the URL provided" do
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
246
|
+
Stomp::Connection.should_receive(:new).with(:hosts => [{:login => 'testlogin',
|
247
|
+
:passcode => 'testpasscode',
|
248
|
+
:host => 'host.foobar.com',
|
249
|
+
:port => 12345}],
|
250
|
+
:reliable => false)
|
251
|
+
Stomp::Client.new('stomp://testlogin:testpasscode@host.foobar.com:12345')
|
223
252
|
end
|
224
253
|
|
225
254
|
it_should_behave_like "standard Client"
|
@@ -236,7 +265,8 @@ describe Stomp::Client do
|
|
236
265
|
:back_off_multiplier => 2,
|
237
266
|
:max_reconnect_attempts => 0,
|
238
267
|
:randomize => false,
|
239
|
-
:connect_timeout => 0
|
268
|
+
:connect_timeout => 0,
|
269
|
+
:reliable => true
|
240
270
|
}
|
241
271
|
end
|
242
272
|
it "should properly parse a URL with failover://" do
|
@@ -303,14 +333,15 @@ describe Stomp::Client do
|
|
303
333
|
url = "failover:(stomp://login1:passcode1@localhost:61616,stomp://login2:passcode2@remotehost:61617)?#{query}"
|
304
334
|
|
305
335
|
#
|
306
|
-
@parameters = {
|
336
|
+
@parameters = {
|
307
337
|
:initial_reconnect_delay => 5.0,
|
308
338
|
:max_reconnect_delay => 60.0,
|
309
339
|
:use_exponential_back_off => false,
|
310
340
|
:back_off_multiplier => 3,
|
311
341
|
:max_reconnect_attempts => 4,
|
312
342
|
:randomize => true,
|
313
|
-
:connect_timeout => 0
|
343
|
+
:connect_timeout => 0,
|
344
|
+
:reliable => true
|
314
345
|
}
|
315
346
|
|
316
347
|
@parameters[:hosts] = [
|
data/spec/connection_spec.rb
CHANGED
@@ -28,11 +28,12 @@ describe Stomp::Connection do
|
|
28
28
|
:max_hbread_fails => 0,
|
29
29
|
:max_hbrlck_fails => 0,
|
30
30
|
:fast_hbs_adjust => 0.0,
|
31
|
+
:connread_timeout => 0,
|
31
32
|
}
|
32
33
|
|
33
34
|
#POG:
|
34
35
|
class Stomp::Connection
|
35
|
-
def _receive( s )
|
36
|
+
def _receive( s, connread = false )
|
36
37
|
end
|
37
38
|
end
|
38
39
|
|
@@ -96,6 +97,7 @@ describe Stomp::Connection do
|
|
96
97
|
:maxHbreadFails => 0,
|
97
98
|
:maxHbrlckFails => 0,
|
98
99
|
:fastHbsAdjust => 0.0,
|
100
|
+
:connreadTimeout => 0,
|
99
101
|
}
|
100
102
|
|
101
103
|
@connection = Stomp::Connection.new(used_hash)
|
@@ -350,6 +352,7 @@ describe Stomp::Connection do
|
|
350
352
|
:max_hbread_fails => 0,
|
351
353
|
:max_hbrlck_fails => 0,
|
352
354
|
:fast_hbs_adjust => 0.0,
|
355
|
+
:connread_timeout => 0,
|
353
356
|
}
|
354
357
|
|
355
358
|
used_hash = {
|
@@ -389,6 +392,7 @@ describe Stomp::Connection do
|
|
389
392
|
:max_hbread_fails => 123,
|
390
393
|
:max_hbrlck_fails => 456,
|
391
394
|
:fast_hbs_adjust => 0.2,
|
395
|
+
:connread_timeout => 42,
|
392
396
|
}
|
393
397
|
|
394
398
|
@connection = Stomp::Connection.new(used_hash)
|
@@ -438,7 +442,6 @@ describe Stomp::Connection do
|
|
438
442
|
@connection.instance_variable_set(:@connection_attempts, limit)
|
439
443
|
@connection.send(:max_reconnect_attempts?).should be_true
|
440
444
|
end
|
441
|
-
|
442
445
|
# These should be raised for the user to deal with
|
443
446
|
it "should not rescue MaxReconnectAttempts" do
|
444
447
|
@connection = Stomp::Connection.new(@parameters)
|
data/stomp.gemspec
CHANGED
@@ -5,7 +5,8 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{stomp}
|
8
|
-
s.version = "1.2.
|
8
|
+
s.version = "1.2.16"
|
9
|
+
s.license = "Apache 2.0"
|
9
10
|
|
10
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
12
|
s.authors = ["Brian McCallister", "Marius Mathiesen", "Thiago Morello", "Guy M. Allard"]
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stomp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
5
|
-
prerelease:
|
4
|
+
version: 1.2.16
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Brian McCallister
|
@@ -17,7 +16,6 @@ dependencies:
|
|
17
16
|
- !ruby/object:Gem::Dependency
|
18
17
|
name: rspec
|
19
18
|
requirement: !ruby/object:Gem::Requirement
|
20
|
-
none: false
|
21
19
|
requirements:
|
22
20
|
- - ! '>='
|
23
21
|
- !ruby/object:Gem::Version
|
@@ -25,7 +23,6 @@ dependencies:
|
|
25
23
|
type: :development
|
26
24
|
prerelease: false
|
27
25
|
version_requirements: !ruby/object:Gem::Requirement
|
28
|
-
none: false
|
29
26
|
requirements:
|
30
27
|
- - ! '>='
|
31
28
|
- !ruby/object:Gem::Version
|
@@ -160,26 +157,26 @@ files:
|
|
160
157
|
- test/test_urlogin.rb
|
161
158
|
- test/tlogger.rb
|
162
159
|
homepage: https://github.com/stompgem/stomp
|
163
|
-
licenses:
|
160
|
+
licenses:
|
161
|
+
- Apache 2.0
|
162
|
+
metadata: {}
|
164
163
|
post_install_message:
|
165
164
|
rdoc_options: []
|
166
165
|
require_paths:
|
167
166
|
- lib
|
168
167
|
required_ruby_version: !ruby/object:Gem::Requirement
|
169
|
-
none: false
|
170
168
|
requirements:
|
171
169
|
- - ! '>='
|
172
170
|
- !ruby/object:Gem::Version
|
173
171
|
version: '0'
|
174
172
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
175
|
-
none: false
|
176
173
|
requirements:
|
177
174
|
- - ! '>='
|
178
175
|
- !ruby/object:Gem::Version
|
179
176
|
version: '0'
|
180
177
|
requirements: []
|
181
178
|
rubyforge_project:
|
182
|
-
rubygems_version:
|
179
|
+
rubygems_version: 2.0.5
|
183
180
|
signing_key:
|
184
181
|
specification_version: 3
|
185
182
|
summary: Ruby client for the Stomp messaging protocol
|