amq-client 0.9.10 → 0.9.11
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +8 -6
- data/amq-client.gemspec +1 -1
- data/lib/amq/client/async/adapter.rb +11 -2
- data/lib/amq/client/async/adapters/event_machine.rb +2 -1
- data/lib/amq/client/async/auth_mechanism_adapter.rb +69 -0
- data/lib/amq/client/async/auth_mechanism_adapter/external.rb +27 -0
- data/lib/amq/client/async/auth_mechanism_adapter/plain.rb +24 -0
- data/lib/amq/client/exceptions.rb +2 -2
- data/lib/amq/client/queue.rb +0 -1
- data/lib/amq/client/settings.rb +4 -3
- data/lib/amq/client/version.rb +1 -1
- data/spec/integration/eventmachine/connection_start_spec.rb +63 -0
- metadata +234 -222
data/.gitignore
CHANGED
@@ -1,11 +1,13 @@
|
|
1
|
-
|
1
|
+
bin/*
|
2
2
|
.bundle
|
3
|
-
vendor/bundle
|
4
|
-
.yardoc/*
|
5
3
|
doc/*
|
6
|
-
|
4
|
+
/*.gem
|
7
5
|
# see http://bit.ly/h2WJPm for reasoning
|
8
6
|
Gemfile.lock
|
9
|
-
|
7
|
+
.rbenv-gemsets
|
8
|
+
.rbenv-version
|
10
9
|
.rbx/*
|
11
|
-
|
10
|
+
.rvmrc
|
11
|
+
vendor
|
12
|
+
vendor/bundle
|
13
|
+
.yardoc/*
|
data/amq-client.gemspec
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
require "amq/client/logging"
|
4
4
|
require "amq/client/settings"
|
5
|
+
require "amq/client/async/auth_mechanism_adapter"
|
5
6
|
require "amq/client/async/entity"
|
6
7
|
require "amq/client/async/channel"
|
7
8
|
|
@@ -509,9 +510,17 @@ module AMQ
|
|
509
510
|
# @api plugin
|
510
511
|
# @see http://tools.ietf.org/rfc/rfc2595.txt RFC 2595
|
511
512
|
def encode_credentials(username, password)
|
512
|
-
|
513
|
+
auth_mechanism_adapter.encode_credentials(username, password)
|
513
514
|
end # encode_credentials(username, password)
|
514
515
|
|
516
|
+
# Retrieves an AuthMechanismAdapter that will encode credentials for
|
517
|
+
# this Adapter.
|
518
|
+
#
|
519
|
+
# @api plugin
|
520
|
+
def auth_mechanism_adapter
|
521
|
+
@auth_mechanism_adapter ||= AuthMechanismAdapter.for_adapter(self)
|
522
|
+
end
|
523
|
+
|
515
524
|
|
516
525
|
# Processes a single frame.
|
517
526
|
#
|
@@ -600,7 +609,7 @@ module AMQ
|
|
600
609
|
# @status undefined. So lets do this. MK.
|
601
610
|
opening!
|
602
611
|
|
603
|
-
self.send_frame(Protocol::Connection::StartOk.encode(@client_properties,
|
612
|
+
self.send_frame(Protocol::Connection::StartOk.encode(@client_properties, mechanism, self.encode_credentials(username, password), @locale))
|
604
613
|
end
|
605
614
|
|
606
615
|
|
@@ -31,6 +31,7 @@ module AMQ
|
|
31
31
|
# @option settings [String] :vhost ("/") Virtual host to use.
|
32
32
|
# @option settings [String] :user ("guest") Username to use for authentication.
|
33
33
|
# @option settings [String] :pass ("guest") Password to use for authentication.
|
34
|
+
# @option settings [String] :auth_mechanism ("PLAIN") SASL authentication mechanism to use.
|
34
35
|
# @option settings [String] :ssl (false) Should be use TLS (SSL) for connection?
|
35
36
|
# @option settings [String] :timeout (nil) Connection timeout.
|
36
37
|
# @option settings [String] :logging (false) Turns logging on or off.
|
@@ -164,7 +165,7 @@ module AMQ
|
|
164
165
|
raise self.class.authentication_failure_exception_class.new(settings)
|
165
166
|
}
|
166
167
|
|
167
|
-
@mechanism = "PLAIN"
|
168
|
+
@mechanism = @settings.fetch(:auth_mechanism, "PLAIN")
|
168
169
|
@locale = @settings.fetch(:locale, "en_GB")
|
169
170
|
@client_properties = Settings.client_properties.merge(@settings.fetch(:client_properties, Hash.new))
|
170
171
|
|
@@ -0,0 +1,69 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module AMQ::Client::Async
|
4
|
+
# Provides a flexible method for encoding AMQP credentials. PLAIN and
|
5
|
+
# EXTERNAL are provided by this gem. In order to implement a new
|
6
|
+
# authentication mechanism, create a subclass like so:
|
7
|
+
#
|
8
|
+
# class MyAuthMechanism < AMQ::Client::Async::AuthMechanismAdapter
|
9
|
+
# auth_mechanism "X-MYAUTH"
|
10
|
+
#
|
11
|
+
# def encode_credentials(username, password)
|
12
|
+
# # ...
|
13
|
+
# end
|
14
|
+
# end
|
15
|
+
class AuthMechanismAdapter
|
16
|
+
|
17
|
+
# Find and instantiate an AuthMechanismAdapter.
|
18
|
+
#
|
19
|
+
# @param [Adapter] adapter The Adapter for which to encode credentials.
|
20
|
+
# @return [AuthMechanismAdapter] An AuthMechanismAdapter that can encode
|
21
|
+
# credentials for the Adapter.
|
22
|
+
# @raise [NotImplementedError] The Adapter's mechanism does not
|
23
|
+
# correspond to any known AuthMechanismAdapter.
|
24
|
+
def self.for_adapter(adapter)
|
25
|
+
registry[adapter.mechanism].new adapter
|
26
|
+
end
|
27
|
+
|
28
|
+
protected
|
29
|
+
|
30
|
+
# Used by subclasses to declare the mechanisms that an
|
31
|
+
# AuthMechanismAdapter understands.
|
32
|
+
#
|
33
|
+
# @param [Array<String>] mechanisms One or more mechanisms that can be
|
34
|
+
# handled by the subclass.
|
35
|
+
def self.auth_mechanism(*mechanisms)
|
36
|
+
mechanisms.each {|mechanism| registry[mechanism] = self}
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
|
41
|
+
# Accesses the registry of AuthMechanismAdapter subclasses. Keys in
|
42
|
+
# this hash are the names of the authentication mechanisms; values are
|
43
|
+
# the classes that handle them. Referencing an unknown mechanism from
|
44
|
+
# this Hash will raise NotImplementedError.
|
45
|
+
def self.registry
|
46
|
+
@@registry ||= Hash.new {raise NotImplementedError}
|
47
|
+
end
|
48
|
+
|
49
|
+
public
|
50
|
+
|
51
|
+
# The Adapter that this AuthMechanismAdapter operates on behalf of.
|
52
|
+
attr_reader :adapter
|
53
|
+
|
54
|
+
private
|
55
|
+
|
56
|
+
# Create a new AuthMechanismAdapter. Users of this class should instead
|
57
|
+
# retrieve an instance through for_adapter.
|
58
|
+
def initialize(adapter)
|
59
|
+
@adapter = adapter
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
# pre-require builtin auth mechanisms
|
65
|
+
Dir[File.join(File.dirname(__FILE__),
|
66
|
+
File.basename(__FILE__, '.rb'),
|
67
|
+
'*')].each do |f|
|
68
|
+
require f
|
69
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module AMQ::Client::Async
|
4
|
+
|
5
|
+
# Manages the encoding of credentials for the EXTERNAL authentication
|
6
|
+
# mechanism.
|
7
|
+
class AuthMechanismAdapter::External < AuthMechanismAdapter
|
8
|
+
|
9
|
+
auth_mechanism "EXTERNAL"
|
10
|
+
|
11
|
+
# Encodes a username and password for the EXTERNAL mechanism. Since
|
12
|
+
# authentication is handled by an encapsulating protocol like SSL or
|
13
|
+
# UNIX domain sockets, EXTERNAL doesn't pass along any username or
|
14
|
+
# password information at all and this method always returns the
|
15
|
+
# empty string.
|
16
|
+
#
|
17
|
+
# @param [String] username The username to encode. This parameter is
|
18
|
+
# ignored.
|
19
|
+
# @param [String] password The password to encode. This parameter is
|
20
|
+
# ignored.
|
21
|
+
# @return [String] The username and password, encoded for the
|
22
|
+
# EXTERNAL mechanism. This is always the empty string.
|
23
|
+
def encode_credentials(username, password)
|
24
|
+
""
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module AMQ::Client::Async
|
4
|
+
|
5
|
+
# Manages the encoding of credentials for the PLAIN authentication
|
6
|
+
# mechanism.
|
7
|
+
class AuthMechanismAdapter::Plain < AuthMechanismAdapter
|
8
|
+
|
9
|
+
auth_mechanism "PLAIN"
|
10
|
+
|
11
|
+
# Encodes credentials for the given username and password. This
|
12
|
+
# involves sending the password across the wire in plaintext, so
|
13
|
+
# PLAIN authentication should only be used over a secure transport
|
14
|
+
# layer.
|
15
|
+
#
|
16
|
+
# @param [String] username The username to encode.
|
17
|
+
# @param [String] password The password to encode.
|
18
|
+
# @return [String] The username and password, encoded for the PLAIN
|
19
|
+
# mechanism.
|
20
|
+
def encode_credentials(username, password)
|
21
|
+
"\0#{username}\0#{password}"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -60,9 +60,9 @@ module AMQ
|
|
60
60
|
class ConnectionClosedError < StandardError
|
61
61
|
def initialize(frame)
|
62
62
|
if frame.respond_to?(:method_class)
|
63
|
-
super("Trying to send frame through a closed connection. Frame is #{frame.inspect}")
|
64
|
-
else
|
65
63
|
super("Trying to send frame through a closed connection. Frame is #{frame.inspect}, method class is #{frame.method_class}")
|
64
|
+
else
|
65
|
+
super("Trying to send frame through a closed connection. Frame is #{frame.inspect}")
|
66
66
|
end
|
67
67
|
end # initialize
|
68
68
|
end # class ConnectionClosedError
|
data/lib/amq/client/queue.rb
CHANGED
data/lib/amq/client/settings.rb
CHANGED
@@ -23,9 +23,10 @@ module AMQ
|
|
23
23
|
:port => AMQ::Protocol::DEFAULT_PORT,
|
24
24
|
|
25
25
|
# login
|
26
|
-
:user
|
27
|
-
:pass
|
28
|
-
:
|
26
|
+
:user => "guest",
|
27
|
+
:pass => "guest",
|
28
|
+
:auth_mechanism => "PLAIN",
|
29
|
+
:vhost => "/",
|
29
30
|
|
30
31
|
# connection timeout
|
31
32
|
:timeout => nil,
|
data/lib/amq/client/version.rb
CHANGED
@@ -10,6 +10,69 @@ describe AMQ::Client::EventMachineClient, "Connection.Start" do
|
|
10
10
|
include EventedSpec::SpecHelper
|
11
11
|
default_timeout 0.5
|
12
12
|
|
13
|
+
it "uses PLAIN authentication by default" do
|
14
|
+
em do
|
15
|
+
AMQ::Client::EventMachineClient.new(0).mechanism.should eq "PLAIN"
|
16
|
+
done
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
it "uses PLAIN authentication when explicitly set" do
|
21
|
+
em do
|
22
|
+
AMQ::Client::EventMachineClient.new(0, :auth_mechanism => "PLAIN").mechanism.should eq "PLAIN"
|
23
|
+
done
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
it "properly encodes username and password for PLAIN authentication" do
|
28
|
+
em do
|
29
|
+
client = AMQ::Client::EventMachineClient.new 0, :auth_mechanism => "PLAIN"
|
30
|
+
client.encode_credentials("user", "pass").should eq "\0user\0pass"
|
31
|
+
done
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
it "uses EXTERNAL authentication when explicitly set" do
|
36
|
+
em do
|
37
|
+
AMQ::Client::EventMachineClient.new(0, :auth_mechanism => "EXTERNAL").mechanism.should eq "EXTERNAL"
|
38
|
+
done
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
it "skips encoding username and password for EXTERNAL authentication" do
|
43
|
+
em do
|
44
|
+
client = AMQ::Client::EventMachineClient.new 0, :auth_mechanism => "EXTERNAL"
|
45
|
+
client.encode_credentials("user", "pass").should eq ""
|
46
|
+
done
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
it "allows user-defined authentication mechanisms" do
|
51
|
+
Class.new AMQ::Client::Async::AuthMechanismAdapter do
|
52
|
+
auth_mechanism "FOO"
|
53
|
+
|
54
|
+
def encode_credentials(username, password)
|
55
|
+
"foo"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
em do
|
60
|
+
client = AMQ::Client::EventMachineClient.new 0, :auth_mechanism => "FOO"
|
61
|
+
client.encode_credentials("user", "pass").should eq "foo"
|
62
|
+
done
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
it "fails for unimplemented authentication mechanisms" do
|
67
|
+
em do
|
68
|
+
client = AMQ::Client::EventMachineClient.new 0, :auth_mechanism => "BAR"
|
69
|
+
expect do
|
70
|
+
client.encode_credentials("user", "pass")
|
71
|
+
end.to raise_error(NotImplementedError)
|
72
|
+
done
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
13
76
|
context "with valid credentials" do
|
14
77
|
it "should trigger the callback" do
|
15
78
|
em do
|
metadata
CHANGED
@@ -1,240 +1,252 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: amq-client
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.9.11
|
5
|
+
prerelease:
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
autorequire:
|
7
|
+
authors:
|
8
|
+
- Jakub Stastny
|
9
|
+
- Michael S. Klishin
|
10
|
+
- Theo Hultberg
|
11
|
+
- Mark Abramov
|
12
|
+
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
15
|
+
date: 2013-01-25 00:00:00.000000000 Z
|
16
|
+
dependencies:
|
17
|
+
- !ruby/object:Gem::Dependency
|
18
|
+
name: eventmachine
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ! '>='
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: !binary |-
|
24
|
+
MA==
|
25
|
+
none: false
|
26
|
+
requirement: !ruby/object:Gem::Requirement
|
27
|
+
requirements:
|
28
|
+
- - ! '>='
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: !binary |-
|
31
|
+
MA==
|
32
|
+
none: false
|
33
|
+
prerelease: false
|
34
|
+
type: :runtime
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: amq-protocol
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ! '>='
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: 1.0.1
|
42
|
+
none: false
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ! '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 1.0.1
|
48
|
+
none: false
|
49
|
+
prerelease: false
|
50
|
+
type: :runtime
|
40
51
|
description: amq-client is a fully-featured, low-level AMQP 0.9.1 client with pluggable networking I/O adapters (EventMachine, cool.io, Eventpanda and so on) and supposed to back more opinionated AMQP clients (such as amqp gem) or be used directly in cases when access to more advanced AMQP 0.9.1 features is more important that convenient APIs
|
41
|
-
email:
|
42
|
-
|
43
|
-
|
52
|
+
email:
|
53
|
+
- !binary |-
|
54
|
+
c3Rhc3RueUAxMDFpZGVhcy5jeg==
|
55
|
+
- michael@novemberain.com
|
44
56
|
executables: []
|
45
|
-
|
46
57
|
extensions: []
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
58
|
+
extra_rdoc_files:
|
59
|
+
- README.textile
|
60
|
+
files:
|
61
|
+
- .gitignore
|
62
|
+
- .gitmodules
|
63
|
+
- .rspec
|
64
|
+
- .travis.yml
|
65
|
+
- .yardopts
|
66
|
+
- Gemfile
|
67
|
+
- LICENSE
|
68
|
+
- README.textile
|
69
|
+
- amq-client.gemspec
|
70
|
+
- bin/ci/before_build.sh
|
71
|
+
- bin/set_test_suite_realms_up.sh
|
72
|
+
- examples/coolio_adapter/basic_consume.rb
|
73
|
+
- examples/coolio_adapter/basic_consume_with_acknowledgements.rb
|
74
|
+
- examples/coolio_adapter/basic_consume_with_rejections.rb
|
75
|
+
- examples/coolio_adapter/basic_publish.rb
|
76
|
+
- examples/coolio_adapter/channel_close.rb
|
77
|
+
- examples/coolio_adapter/example_helper.rb
|
78
|
+
- examples/coolio_adapter/exchange_declare.rb
|
79
|
+
- examples/coolio_adapter/kitchen_sink1.rb
|
80
|
+
- examples/coolio_adapter/queue_bind.rb
|
81
|
+
- examples/coolio_adapter/queue_purge.rb
|
82
|
+
- examples/coolio_adapter/queue_unbind.rb
|
83
|
+
- examples/eventmachine_adapter/authentication/connection_open_failure_due_to_invalid_vhost.rb
|
84
|
+
- examples/eventmachine_adapter/authentication/plain_password_with_custom_role_credentials.rb
|
85
|
+
- examples/eventmachine_adapter/authentication/plain_password_with_default_role_credentials.rb
|
86
|
+
- examples/eventmachine_adapter/authentication/plain_password_with_incorrect_credentials_handled_with_a_callback.rb
|
87
|
+
- examples/eventmachine_adapter/authentication/plain_password_with_incorrect_credentials_handled_with_a_rescue_block.rb
|
88
|
+
- examples/eventmachine_adapter/basic_cancel.rb
|
89
|
+
- examples/eventmachine_adapter/basic_consume.rb
|
90
|
+
- examples/eventmachine_adapter/basic_consume_with_acknowledgements.rb
|
91
|
+
- examples/eventmachine_adapter/basic_consume_with_rejections.rb
|
92
|
+
- examples/eventmachine_adapter/basic_get.rb
|
93
|
+
- examples/eventmachine_adapter/basic_get_with_empty_queue.rb
|
94
|
+
- examples/eventmachine_adapter/basic_publish.rb
|
95
|
+
- examples/eventmachine_adapter/basic_qos.rb
|
96
|
+
- examples/eventmachine_adapter/basic_recover.rb
|
97
|
+
- examples/eventmachine_adapter/basic_return.rb
|
98
|
+
- examples/eventmachine_adapter/channel_close.rb
|
99
|
+
- examples/eventmachine_adapter/channel_flow.rb
|
100
|
+
- examples/eventmachine_adapter/channel_level_exception_handling.rb
|
101
|
+
- examples/eventmachine_adapter/error_handling/connection_failure_callback.rb
|
102
|
+
- examples/eventmachine_adapter/error_handling/connection_failure_exception.rb
|
103
|
+
- examples/eventmachine_adapter/error_handling/connection_loss_handler_that_fails_over.rb
|
104
|
+
- examples/eventmachine_adapter/error_handling/connection_loss_handler_with_automatic_recovery.rb
|
105
|
+
- examples/eventmachine_adapter/error_handling/connection_loss_handler_with_manual_recovery.rb
|
106
|
+
- examples/eventmachine_adapter/error_handling/handling_a_channel_level_exception.rb
|
107
|
+
- examples/eventmachine_adapter/example_helper.rb
|
108
|
+
- examples/eventmachine_adapter/exchange_declare.rb
|
109
|
+
- examples/eventmachine_adapter/extensions/rabbitmq/handling_confirm_select_ok.rb
|
110
|
+
- examples/eventmachine_adapter/extensions/rabbitmq/publisher_confirmations_with_transient_messages.rb
|
111
|
+
- examples/eventmachine_adapter/extensions/rabbitmq/publisher_confirmations_with_unroutable_message.rb
|
112
|
+
- examples/eventmachine_adapter/kitchen_sink1.rb
|
113
|
+
- examples/eventmachine_adapter/queue_bind.rb
|
114
|
+
- examples/eventmachine_adapter/queue_declare.rb
|
115
|
+
- examples/eventmachine_adapter/queue_purge.rb
|
116
|
+
- examples/eventmachine_adapter/queue_unbind.rb
|
117
|
+
- examples/eventmachine_adapter/server_capabilities.rb
|
118
|
+
- examples/eventmachine_adapter/tls/tls_without_peer_verification.rb
|
119
|
+
- examples/eventmachine_adapter/tx_commit.rb
|
120
|
+
- examples/eventmachine_adapter/tx_rollback.rb
|
121
|
+
- examples/eventmachine_adapter/tx_select.rb
|
122
|
+
- examples/tls_certificates/client/cert.pem
|
123
|
+
- examples/tls_certificates/client/key.pem
|
124
|
+
- examples/tls_certificates/client/keycert.p12
|
125
|
+
- examples/tls_certificates/client/req.pem
|
126
|
+
- examples/tls_certificates/server/cert.pem
|
127
|
+
- examples/tls_certificates/server/key.pem
|
128
|
+
- examples/tls_certificates/server/keycert.p12
|
129
|
+
- examples/tls_certificates/server/req.pem
|
130
|
+
- examples/tls_certificates/testca/cacert.cer
|
131
|
+
- examples/tls_certificates/testca/cacert.pem
|
132
|
+
- examples/tls_certificates/testca/certs/01.pem
|
133
|
+
- examples/tls_certificates/testca/certs/02.pem
|
134
|
+
- examples/tls_certificates/testca/index.txt
|
135
|
+
- examples/tls_certificates/testca/index.txt.attr
|
136
|
+
- examples/tls_certificates/testca/index.txt.attr.old
|
137
|
+
- examples/tls_certificates/testca/index.txt.old
|
138
|
+
- examples/tls_certificates/testca/openssl.cnf
|
139
|
+
- examples/tls_certificates/testca/private/cakey.pem
|
140
|
+
- examples/tls_certificates/testca/serial
|
141
|
+
- examples/tls_certificates/testca/serial.old
|
142
|
+
- irb.rb
|
143
|
+
- lib/amq/client.rb
|
144
|
+
- lib/amq/client/adapter.rb
|
145
|
+
- lib/amq/client/adapters/coolio.rb
|
146
|
+
- lib/amq/client/adapters/event_machine.rb
|
147
|
+
- lib/amq/client/async/adapter.rb
|
148
|
+
- lib/amq/client/async/adapters/coolio.rb
|
149
|
+
- lib/amq/client/async/adapters/event_machine.rb
|
150
|
+
- lib/amq/client/async/adapters/eventmachine.rb
|
151
|
+
- lib/amq/client/async/auth_mechanism_adapter.rb
|
152
|
+
- lib/amq/client/async/auth_mechanism_adapter/external.rb
|
153
|
+
- lib/amq/client/async/auth_mechanism_adapter/plain.rb
|
154
|
+
- lib/amq/client/async/callbacks.rb
|
155
|
+
- lib/amq/client/async/channel.rb
|
156
|
+
- lib/amq/client/async/consumer.rb
|
157
|
+
- lib/amq/client/async/entity.rb
|
158
|
+
- lib/amq/client/async/exchange.rb
|
159
|
+
- lib/amq/client/async/extensions/rabbitmq/basic.rb
|
160
|
+
- lib/amq/client/async/extensions/rabbitmq/cancel.rb
|
161
|
+
- lib/amq/client/async/extensions/rabbitmq/confirm.rb
|
162
|
+
- lib/amq/client/async/queue.rb
|
163
|
+
- lib/amq/client/callbacks.rb
|
164
|
+
- lib/amq/client/channel.rb
|
165
|
+
- lib/amq/client/consumer_tag_generator.rb
|
166
|
+
- lib/amq/client/entity.rb
|
167
|
+
- lib/amq/client/exceptions.rb
|
168
|
+
- lib/amq/client/exchange.rb
|
169
|
+
- lib/amq/client/extensions/rabbitmq.rb
|
170
|
+
- lib/amq/client/extensions/rabbitmq/basic.rb
|
171
|
+
- lib/amq/client/extensions/rabbitmq/cancel.rb
|
172
|
+
- lib/amq/client/extensions/rabbitmq/confirm.rb
|
173
|
+
- lib/amq/client/framing/io/frame.rb
|
174
|
+
- lib/amq/client/framing/string/frame.rb
|
175
|
+
- lib/amq/client/handlers_registry.rb
|
176
|
+
- lib/amq/client/logging.rb
|
177
|
+
- lib/amq/client/openable.rb
|
178
|
+
- lib/amq/client/queue.rb
|
179
|
+
- lib/amq/client/server_named_entity.rb
|
180
|
+
- lib/amq/client/settings.rb
|
181
|
+
- lib/amq/client/version.rb
|
182
|
+
- lib/amq/protocol/get_response.rb
|
183
|
+
- spec/benchmarks/adapters.rb
|
184
|
+
- spec/client/framing/io_frame_spec.rb
|
185
|
+
- spec/client/framing/string_frame_spec.rb
|
186
|
+
- spec/client/protocol/get_response_spec.rb
|
187
|
+
- spec/integration/coolio/basic_ack_spec.rb
|
188
|
+
- spec/integration/coolio/basic_cancel_spec.rb
|
189
|
+
- spec/integration/coolio/basic_consume_spec.rb
|
190
|
+
- spec/integration/coolio/basic_get_spec.rb
|
191
|
+
- spec/integration/coolio/basic_return_spec.rb
|
192
|
+
- spec/integration/coolio/channel_close_spec.rb
|
193
|
+
- spec/integration/coolio/channel_flow_spec.rb
|
194
|
+
- spec/integration/coolio/connection_close_spec.rb
|
195
|
+
- spec/integration/coolio/connection_start_spec.rb
|
196
|
+
- spec/integration/coolio/exchange_declare_spec.rb
|
197
|
+
- spec/integration/coolio/spec_helper.rb
|
198
|
+
- spec/integration/coolio/tx_commit_spec.rb
|
199
|
+
- spec/integration/coolio/tx_rollback_spec.rb
|
200
|
+
- spec/integration/eventmachine/basic_ack_spec.rb
|
201
|
+
- spec/integration/eventmachine/basic_cancel_spec.rb
|
202
|
+
- spec/integration/eventmachine/basic_consume_spec.rb
|
203
|
+
- spec/integration/eventmachine/basic_get_spec.rb
|
204
|
+
- spec/integration/eventmachine/basic_return_spec.rb
|
205
|
+
- spec/integration/eventmachine/channel_close_spec.rb
|
206
|
+
- spec/integration/eventmachine/channel_flow_spec.rb
|
207
|
+
- spec/integration/eventmachine/concurrent_basic_publish_spec.rb
|
208
|
+
- spec/integration/eventmachine/connection_close_spec.rb
|
209
|
+
- spec/integration/eventmachine/connection_start_spec.rb
|
210
|
+
- spec/integration/eventmachine/exchange_declare_spec.rb
|
211
|
+
- spec/integration/eventmachine/queue_declare_spec.rb
|
212
|
+
- spec/integration/eventmachine/regressions/amqp_gem_issue66_spec.rb
|
213
|
+
- spec/integration/eventmachine/spec_helper.rb
|
214
|
+
- spec/integration/eventmachine/tx_commit_spec.rb
|
215
|
+
- spec/integration/eventmachine/tx_rollback_spec.rb
|
216
|
+
- spec/regression/bad_frame_slicing_in_adapters_spec.rb
|
217
|
+
- spec/spec_helper.rb
|
218
|
+
- spec/unit/client/adapter_spec.rb
|
219
|
+
- spec/unit/client/entity_spec.rb
|
220
|
+
- spec/unit/client/logging_spec.rb
|
221
|
+
- spec/unit/client/mixins/status_spec.rb
|
222
|
+
- spec/unit/client/settings_spec.rb
|
223
|
+
- spec/unit/client_spec.rb
|
224
|
+
- tasks.rb
|
212
225
|
homepage: http://github.com/ruby-amqp/amq-client
|
213
226
|
licenses: []
|
214
|
-
|
215
|
-
post_install_message:
|
227
|
+
post_install_message:
|
216
228
|
rdoc_options: []
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
229
|
+
require_paths:
|
230
|
+
- lib
|
231
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
232
|
+
requirements:
|
233
|
+
- - ! '>='
|
234
|
+
- !ruby/object:Gem::Version
|
235
|
+
version: !binary |-
|
236
|
+
MA==
|
221
237
|
none: false
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
238
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
239
|
+
requirements:
|
240
|
+
- - ! '>='
|
241
|
+
- !ruby/object:Gem::Version
|
242
|
+
version: !binary |-
|
243
|
+
MA==
|
227
244
|
none: false
|
228
|
-
requirements:
|
229
|
-
- - ">="
|
230
|
-
- !ruby/object:Gem::Version
|
231
|
-
version: "0"
|
232
245
|
requirements: []
|
233
|
-
|
234
246
|
rubyforge_project: amq-client
|
235
247
|
rubygems_version: 1.8.24
|
236
|
-
signing_key:
|
248
|
+
signing_key:
|
237
249
|
specification_version: 3
|
238
250
|
summary: amq-client is a fully-featured, low-level AMQP 0.9.1 client
|
239
251
|
test_files: []
|
240
|
-
|
252
|
+
has_rdoc:
|