amq-protocol 1.3.0 → 1.4.0
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 +7 -0
- data/.gitignore +1 -0
- data/.travis.yml +6 -5
- data/Gemfile +2 -2
- data/codegen/codegen.py +1 -5
- data/generate.rb +3 -1
- data/lib/amq/protocol/client.rb +123 -0
- data/lib/amq/protocol/version.rb +1 -1
- data/spec/spec_helper.rb +3 -3
- metadata +86 -91
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 1f186e3bf24e927b6711cda58c42003a46cd481c
|
4
|
+
data.tar.gz: f77baf1386daf522b006608a90714df0e97781bb
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 703d318cd4bddf254866c15b2870e14e28d2817687763f294e5d7c66e6c1b6026a9f60243803e29d4868129478a89ba07805610dcbbf6515159a293949b9ccad
|
7
|
+
data.tar.gz: 187fa32ab85369862486497e5663f229b741d9034b7e8bba2a869c9f9968b18f223df79decdf705cc00277e9ca8f1e169829edc7b3d65d2f1804cfbb48acb65d
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
@@ -2,14 +2,15 @@ language: ruby
|
|
2
2
|
bundler_args: --without development
|
3
3
|
script: "bundle exec rspec spec"
|
4
4
|
rvm:
|
5
|
-
-
|
6
|
-
- rbx-18mode
|
7
|
-
- rbx-19mode
|
8
|
-
- 1.9.2
|
5
|
+
- 2.0
|
9
6
|
- 1.9.3
|
10
|
-
- ruby-head
|
11
7
|
- jruby-19mode
|
8
|
+
- 1.9.2
|
9
|
+
- rbx-19mode
|
10
|
+
- ruby-head
|
12
11
|
- jruby-head
|
12
|
+
- 1.8.7
|
13
|
+
- rbx-18mode
|
13
14
|
notifications:
|
14
15
|
recipients:
|
15
16
|
- michael@novemberain.com
|
data/Gemfile
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
-
source
|
3
|
+
source "https://rubygems.org"
|
4
4
|
|
5
5
|
group :development do
|
6
6
|
# excludes Windows, Rubinius and JRuby
|
@@ -8,6 +8,6 @@ group :development do
|
|
8
8
|
end
|
9
9
|
|
10
10
|
group :test do
|
11
|
-
gem "rspec", ">= 2.
|
11
|
+
gem "rspec", ">= 2.13.0"
|
12
12
|
gem "effin_utf8"
|
13
13
|
end
|
data/codegen/codegen.py
CHANGED
@@ -12,7 +12,7 @@ from amqp_codegen import *
|
|
12
12
|
try:
|
13
13
|
from mako.template import Template
|
14
14
|
except ImportError:
|
15
|
-
print "Mako isn't installed.
|
15
|
+
print "Mako isn't installed. Please install mako via pip or similar."
|
16
16
|
sys.exit(1)
|
17
17
|
|
18
18
|
# main class
|
@@ -46,10 +46,6 @@ class AmqpSpecObject(AmqpSpec):
|
|
46
46
|
|
47
47
|
self.classes = filter(lambda klass: not klass.ignored, self.classes)
|
48
48
|
|
49
|
-
# I know, I'm a bad, bad boy, but come on guys,
|
50
|
-
# monkey-patching is just handy for this case.
|
51
|
-
# Oh hell, why Python doesn't have at least
|
52
|
-
# anonymous functions? This looks so ugly.
|
53
49
|
original_init = AmqpEntity.__init__
|
54
50
|
def new_init(self, arg):
|
55
51
|
original_init(self, arg)
|
data/generate.rb
CHANGED
@@ -5,6 +5,8 @@ def sh(*args)
|
|
5
5
|
system(*args)
|
6
6
|
end
|
7
7
|
|
8
|
+
extensions = ["codegen/rabbitmq-codegen/credit_extension.json"]
|
9
|
+
|
8
10
|
spec = "codegen/rabbitmq-codegen/amqp-rabbitmq-0.9.1.json"
|
9
11
|
unless File.exist?(spec)
|
10
12
|
sh "git submodule update --init"
|
@@ -12,7 +14,7 @@ end
|
|
12
14
|
|
13
15
|
path = "lib/amq/protocol/client.rb"
|
14
16
|
puts "Running ./codegen/codegen.py client #{spec} #{path}"
|
15
|
-
sh "./codegen/codegen.py client #{spec} #{path}"
|
17
|
+
sh "./codegen/codegen.py client #{spec} #{extensions.join(' ')} #{path}"
|
16
18
|
if File.file?(path)
|
17
19
|
sh "ruby -c #{path}"
|
18
20
|
end
|
data/lib/amq/protocol/client.rb
CHANGED
@@ -2165,6 +2165,129 @@ module AMQ
|
|
2165
2165
|
|
2166
2166
|
end
|
2167
2167
|
|
2168
|
+
class Credit < Protocol::Method
|
2169
|
+
@name = "basic.credit"
|
2170
|
+
@method_id = 200
|
2171
|
+
@index = 0x003C00C8 # 60, 200, 3932360
|
2172
|
+
@packed_indexes = [60, 200].pack(PACK_UINT16_X2).freeze
|
2173
|
+
|
2174
|
+
# @return
|
2175
|
+
def self.decode(data)
|
2176
|
+
offset = 0
|
2177
|
+
length = data[offset, 1].unpack(PACK_CHAR).first
|
2178
|
+
offset += 1
|
2179
|
+
consumer_tag = data[offset, length]
|
2180
|
+
offset += length
|
2181
|
+
credit = data[offset, 4].unpack(PACK_UINT32).first
|
2182
|
+
offset += 4
|
2183
|
+
bit_buffer = data[offset, 1].unpack(PACK_CHAR).first
|
2184
|
+
offset += 1
|
2185
|
+
drain = (bit_buffer & (1 << 0)) != 0
|
2186
|
+
self.new(consumer_tag, credit, drain)
|
2187
|
+
end
|
2188
|
+
|
2189
|
+
attr_reader :consumer_tag, :credit, :drain
|
2190
|
+
def initialize(consumer_tag, credit, drain)
|
2191
|
+
@consumer_tag = consumer_tag
|
2192
|
+
@credit = credit
|
2193
|
+
@drain = drain
|
2194
|
+
end
|
2195
|
+
|
2196
|
+
def self.has_content?
|
2197
|
+
false
|
2198
|
+
end
|
2199
|
+
|
2200
|
+
# @return
|
2201
|
+
# [u'consumer_tag = EMPTY_STRING', u'credit = nil', u'drain = nil']
|
2202
|
+
def self.encode(channel, consumer_tag, credit, drain)
|
2203
|
+
buffer = ''
|
2204
|
+
buffer << @packed_indexes
|
2205
|
+
buffer << consumer_tag.to_s.bytesize.chr
|
2206
|
+
buffer << consumer_tag.to_s
|
2207
|
+
buffer << [credit].pack(PACK_UINT32)
|
2208
|
+
bit_buffer = 0
|
2209
|
+
bit_buffer = bit_buffer | (1 << 0) if drain
|
2210
|
+
buffer << [bit_buffer].pack(PACK_CHAR)
|
2211
|
+
MethodFrame.new(buffer, channel)
|
2212
|
+
end
|
2213
|
+
|
2214
|
+
end
|
2215
|
+
|
2216
|
+
class CreditOk < Protocol::Method
|
2217
|
+
@name = "basic.credit-ok"
|
2218
|
+
@method_id = 201
|
2219
|
+
@index = 0x003C00C9 # 60, 201, 3932361
|
2220
|
+
@packed_indexes = [60, 201].pack(PACK_UINT16_X2).freeze
|
2221
|
+
|
2222
|
+
# @return
|
2223
|
+
def self.decode(data)
|
2224
|
+
offset = 0
|
2225
|
+
available = data[offset, 4].unpack(PACK_UINT32).first
|
2226
|
+
offset += 4
|
2227
|
+
self.new(available)
|
2228
|
+
end
|
2229
|
+
|
2230
|
+
attr_reader :available
|
2231
|
+
def initialize(available)
|
2232
|
+
@available = available
|
2233
|
+
end
|
2234
|
+
|
2235
|
+
def self.has_content?
|
2236
|
+
false
|
2237
|
+
end
|
2238
|
+
|
2239
|
+
# @return
|
2240
|
+
# [u'available = nil']
|
2241
|
+
def self.encode(channel, available)
|
2242
|
+
buffer = ''
|
2243
|
+
buffer << @packed_indexes
|
2244
|
+
buffer << [available].pack(PACK_UINT32)
|
2245
|
+
MethodFrame.new(buffer, channel)
|
2246
|
+
end
|
2247
|
+
|
2248
|
+
end
|
2249
|
+
|
2250
|
+
class CreditDrained < Protocol::Method
|
2251
|
+
@name = "basic.credit-drained"
|
2252
|
+
@method_id = 202
|
2253
|
+
@index = 0x003C00CA # 60, 202, 3932362
|
2254
|
+
@packed_indexes = [60, 202].pack(PACK_UINT16_X2).freeze
|
2255
|
+
|
2256
|
+
# @return
|
2257
|
+
def self.decode(data)
|
2258
|
+
offset = 0
|
2259
|
+
length = data[offset, 1].unpack(PACK_CHAR).first
|
2260
|
+
offset += 1
|
2261
|
+
consumer_tag = data[offset, length]
|
2262
|
+
offset += length
|
2263
|
+
credit_drained = data[offset, 4].unpack(PACK_UINT32).first
|
2264
|
+
offset += 4
|
2265
|
+
self.new(consumer_tag, credit_drained)
|
2266
|
+
end
|
2267
|
+
|
2268
|
+
attr_reader :consumer_tag, :credit_drained
|
2269
|
+
def initialize(consumer_tag, credit_drained)
|
2270
|
+
@consumer_tag = consumer_tag
|
2271
|
+
@credit_drained = credit_drained
|
2272
|
+
end
|
2273
|
+
|
2274
|
+
def self.has_content?
|
2275
|
+
false
|
2276
|
+
end
|
2277
|
+
|
2278
|
+
# @return
|
2279
|
+
# [u'consumer_tag = EMPTY_STRING', u'credit_drained = nil']
|
2280
|
+
def self.encode(channel, consumer_tag, credit_drained)
|
2281
|
+
buffer = ''
|
2282
|
+
buffer << @packed_indexes
|
2283
|
+
buffer << consumer_tag.to_s.bytesize.chr
|
2284
|
+
buffer << consumer_tag.to_s
|
2285
|
+
buffer << [credit_drained].pack(PACK_UINT32)
|
2286
|
+
MethodFrame.new(buffer, channel)
|
2287
|
+
end
|
2288
|
+
|
2289
|
+
end
|
2290
|
+
|
2168
2291
|
end
|
2169
2292
|
|
2170
2293
|
class Tx < Protocol::Class
|
data/lib/amq/protocol/version.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -20,7 +20,7 @@ require "amq/protocol"
|
|
20
20
|
|
21
21
|
puts "Running on #{RUBY_VERSION}"
|
22
22
|
|
23
|
-
module
|
23
|
+
module RubyVersionsSupport
|
24
24
|
def one_point_eight?
|
25
25
|
RUBY_VERSION =~ /^1.8/
|
26
26
|
end
|
@@ -30,6 +30,6 @@ end # RubyVersionsSUpport
|
|
30
30
|
RSpec.configure do |config|
|
31
31
|
config.include AMQ::Protocol
|
32
32
|
|
33
|
-
config.include(
|
34
|
-
config.extend(
|
33
|
+
config.include(RubyVersionsSupport)
|
34
|
+
config.extend(RubyVersionsSupport)
|
35
35
|
end
|
metadata
CHANGED
@@ -1,107 +1,102 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: amq-protocol
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
version: 1.3.0
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.4.0
|
6
5
|
platform: ruby
|
7
|
-
authors:
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
6
|
+
authors:
|
7
|
+
- Jakub Stastny
|
8
|
+
- Michael S. Klishin
|
9
|
+
- Theo Hultberg
|
10
|
+
- Mark Abramov
|
12
11
|
autorequire:
|
13
12
|
bindir: bin
|
14
13
|
cert_chain: []
|
15
|
-
|
16
|
-
date: 2013-04-10 00:00:00 Z
|
14
|
+
date: 2013-04-30 00:00:00.000000000 Z
|
17
15
|
dependencies: []
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
16
|
+
description: |2
|
17
|
+
amq-protocol is an AMQP 0.9.1 serialization library for Ruby. It is not an
|
18
|
+
AMQP client: amq-protocol only handles serialization and deserialization.
|
19
|
+
If you want to write your own AMQP client, this gem can help you with that.
|
20
|
+
email:
|
21
|
+
- michael@novemberain.com
|
22
|
+
- stastny@101ideas.cz
|
23
23
|
executables: []
|
24
|
-
|
25
24
|
extensions: []
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
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
|
-
- spec/spec_helper.rb
|
25
|
+
extra_rdoc_files:
|
26
|
+
- README.md
|
27
|
+
files:
|
28
|
+
- .gitignore
|
29
|
+
- .gitmodules
|
30
|
+
- .rspec
|
31
|
+
- .travis.yml
|
32
|
+
- ChangeLog.md
|
33
|
+
- Gemfile
|
34
|
+
- LICENSE
|
35
|
+
- PROFILING.md
|
36
|
+
- README.md
|
37
|
+
- amq-protocol.gemspec
|
38
|
+
- codegen/__init__.py
|
39
|
+
- codegen/amqp_0.9.1_changes.json
|
40
|
+
- codegen/codegen.py
|
41
|
+
- codegen/codegen_helpers.py
|
42
|
+
- codegen/protocol.rb.pytemplate
|
43
|
+
- generate.rb
|
44
|
+
- lib/amq/bit_set.rb
|
45
|
+
- lib/amq/endianness.rb
|
46
|
+
- lib/amq/hacks.rb
|
47
|
+
- lib/amq/int_allocator.rb
|
48
|
+
- lib/amq/protocol.rb
|
49
|
+
- lib/amq/protocol/client.rb
|
50
|
+
- lib/amq/protocol/frame.rb
|
51
|
+
- lib/amq/protocol/table.rb
|
52
|
+
- lib/amq/protocol/table_value_decoder.rb
|
53
|
+
- lib/amq/protocol/table_value_encoder.rb
|
54
|
+
- lib/amq/protocol/type_constants.rb
|
55
|
+
- lib/amq/protocol/version.rb
|
56
|
+
- lib/amq/settings.rb
|
57
|
+
- spec/amq/bit_set_spec.rb
|
58
|
+
- spec/amq/hacks_spec.rb
|
59
|
+
- spec/amq/int_allocator_spec.rb
|
60
|
+
- spec/amq/protocol/basic_spec.rb
|
61
|
+
- spec/amq/protocol/blank_body_encoding_spec.rb
|
62
|
+
- spec/amq/protocol/channel_spec.rb
|
63
|
+
- spec/amq/protocol/confirm_spec.rb
|
64
|
+
- spec/amq/protocol/connection_spec.rb
|
65
|
+
- spec/amq/protocol/constants_spec.rb
|
66
|
+
- spec/amq/protocol/exchange_spec.rb
|
67
|
+
- spec/amq/protocol/frame_spec.rb
|
68
|
+
- spec/amq/protocol/method_spec.rb
|
69
|
+
- spec/amq/protocol/queue_spec.rb
|
70
|
+
- spec/amq/protocol/table_spec.rb
|
71
|
+
- spec/amq/protocol/tx_spec.rb
|
72
|
+
- spec/amq/protocol/value_decoder_spec.rb
|
73
|
+
- spec/amq/protocol/value_encoder_spec.rb
|
74
|
+
- spec/amq/protocol_spec.rb
|
75
|
+
- spec/amq/settings_spec.rb
|
76
|
+
- spec/spec_helper.rb
|
79
77
|
homepage: http://github.com/ruby-amqp/amq-protocol
|
80
|
-
licenses:
|
81
|
-
|
78
|
+
licenses:
|
79
|
+
- MIT
|
80
|
+
metadata: {}
|
82
81
|
post_install_message:
|
83
82
|
rdoc_options: []
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
- - ">="
|
97
|
-
- !ruby/object:Gem::Version
|
98
|
-
version: "0"
|
83
|
+
require_paths:
|
84
|
+
- lib
|
85
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
91
|
+
requirements:
|
92
|
+
- - '>='
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
99
95
|
requirements: []
|
100
|
-
|
101
96
|
rubyforge_project: amq-protocol
|
102
|
-
rubygems_version:
|
97
|
+
rubygems_version: 2.0.3
|
103
98
|
signing_key:
|
104
|
-
specification_version:
|
99
|
+
specification_version: 4
|
105
100
|
summary: AMQP 0.9.1 encoder & decoder.
|
106
101
|
test_files: []
|
107
|
-
|
102
|
+
has_rdoc:
|