amq-protocol 0.7.0.alpha4 → 0.7.0.alpha5
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +2 -2
- data/lib/amq/protocol/client.rb +4 -2
- data/lib/amq/protocol/table.rb +11 -5
- data/lib/amq/protocol/version.rb +1 -1
- data/spec/amq/protocol/table_spec.rb +8 -2
- metadata +43 -22
data/.travis.yml
CHANGED
data/lib/amq/protocol/client.rb
CHANGED
@@ -26,13 +26,15 @@ module AMQ
|
|
26
26
|
PACK_UCHAR_UINT32 = "CN".freeze
|
27
27
|
PACK_CHAR_UINT16_UINT32 = "cnN".freeze
|
28
28
|
|
29
|
-
|
29
|
+
PACK_32BIT_FLOAT = 'f'.freeze
|
30
|
+
PACK_64BIT_FLOAT = 'd'.freeze
|
31
|
+
|
32
|
+
|
30
33
|
# @return [Array] Collection of subclasses of AMQ::Protocol::Class.
|
31
34
|
def self.classes
|
32
35
|
Protocol::Class.classes
|
33
36
|
end
|
34
37
|
|
35
|
-
# @version 0.0.1
|
36
38
|
# @return [Array] Collection of subclasses of AMQ::Protocol::Method.
|
37
39
|
def self.methods
|
38
40
|
Protocol::Method.methods
|
data/lib/amq/protocol/table.rb
CHANGED
@@ -44,17 +44,19 @@ module AMQ
|
|
44
44
|
when Integer then
|
45
45
|
buffer << TYPE_INTEGER
|
46
46
|
buffer << [value].pack(PACK_UINT32)
|
47
|
+
when Float then
|
48
|
+
buffer << TYPE_32BIT_FLOAT
|
49
|
+
buffer << [value].pack(PACK_32BIT_FLOAT)
|
47
50
|
when TrueClass, FalseClass then
|
48
51
|
value = value ? 1 : 0
|
49
52
|
buffer << TYPE_INTEGER
|
50
53
|
buffer << [value].pack(PACK_UINT32)
|
51
54
|
when Hash then
|
52
|
-
buffer << TYPE_HASH #
|
55
|
+
buffer << TYPE_HASH # TODO: encoding support
|
53
56
|
buffer << self.encode(value)
|
54
57
|
when Time then
|
55
|
-
# TODO: encode timezone?
|
56
58
|
buffer << TYPE_TIME
|
57
|
-
buffer << [value.to_i].pack(PACK_INT64).reverse #
|
59
|
+
buffer << [value.to_i].pack(PACK_INT64).reverse # FIXME: there has to be a more efficient way
|
58
60
|
else
|
59
61
|
# We don't want to require these libraries.
|
60
62
|
if defined?(BigDecimal) && value.is_a?(BigDecimal)
|
@@ -123,8 +125,12 @@ module AMQ
|
|
123
125
|
when TYPE_SIGNED_8BIT then raise NotImplementedError.new
|
124
126
|
when TYPE_SIGNED_16BIT then raise NotImplementedError.new
|
125
127
|
when TYPE_SIGNED_64BIT then raise NotImplementedError.new
|
126
|
-
when TYPE_32BIT_FLOAT then
|
127
|
-
|
128
|
+
when TYPE_32BIT_FLOAT then
|
129
|
+
value = data.slice(offset, 4).unpack(PACK_32BIT_FLOAT).first
|
130
|
+
offset += 4
|
131
|
+
when TYPE_64BIT_FLOAT then
|
132
|
+
value = data.slice(offset, 8).unpack(PACK_64BIT_FLOAT).first
|
133
|
+
offset += 8
|
128
134
|
when TYPE_VOID
|
129
135
|
value = nil
|
130
136
|
when TYPE_BYTE_ARRAY
|
data/lib/amq/protocol/version.rb
CHANGED
@@ -17,6 +17,7 @@ module AMQ
|
|
17
17
|
{
|
18
18
|
{} => "\000\000\000\000",
|
19
19
|
{"test" => 1} => "\000\000\000\n\004testI\000\000\000\001",
|
20
|
+
{"float" => 1.0} => "\000\000\000\v\005floatf\000\000\200?",
|
20
21
|
{"test" => "string"} => "\000\000\000\020\004testS\000\000\000\006string",
|
21
22
|
{"test" => {}} => "\000\000\000\n\004testF\000\000\000\000",
|
22
23
|
{"test" => bigdecimal_1} => "\000\000\000\v\004testD\000\000\000\000\001",
|
@@ -27,6 +28,7 @@ module AMQ
|
|
27
28
|
{
|
28
29
|
{} => "\x00\x00\x00\x00",
|
29
30
|
{"test" => 1} => "\x00\x00\x00\n\x04testI\x00\x00\x00\x01",
|
31
|
+
{"float" => 1.0} => "\000\000\000\v\005floatf\000\000\200?",
|
30
32
|
{"test" => "string"} => "\x00\x00\x00\x10\x04testS\x00\x00\x00\x06string",
|
31
33
|
{"test" => {}} => "\x00\x00\x00\n\x04testF\x00\x00\x00\x00",
|
32
34
|
{"test" => bigdecimal_1} => "\x00\x00\x00\v\x04testD\x00\x00\x00\x00\x01",
|
@@ -46,10 +48,14 @@ module AMQ
|
|
46
48
|
Table.encode(nil).should eql(encoded_value)
|
47
49
|
end
|
48
50
|
|
49
|
-
it "should return \"\x00\x00\x00\n\x04testI\x00\x00\x00\x01\" for {test
|
51
|
+
it "should return \"\x00\x00\x00\n\x04testI\x00\x00\x00\x01\" for { :test => true }" do
|
50
52
|
Table.encode(:test => true).should eql("\x00\x00\x00\n\x04testI\x00\x00\x00\x01")
|
51
53
|
end
|
52
54
|
|
55
|
+
it "should return \"\x00\x00\x00\n\x04testI\x00\x00\x00\x01\" for { :coordinates => { :latitude => 59.35, :longitude => 18.066667 } }" do
|
56
|
+
Table.encode(:coordinates => { :latitude => 59.35, :longitude => 18.066667 }).should eql("\x00\x00\x00.\vcoordinatesF\x00\x00\x00\x1D\blatitudefffmB\tlongitudef\x89\x88\x90A")
|
57
|
+
end
|
58
|
+
|
53
59
|
DATA.each do |data, encoded|
|
54
60
|
it "should return #{encoded.inspect} for #{data.inspect}" do
|
55
61
|
Table.encode(data).should eql(encoded)
|
@@ -66,4 +72,4 @@ module AMQ
|
|
66
72
|
end
|
67
73
|
end
|
68
74
|
end
|
69
|
-
end
|
75
|
+
end
|
metadata
CHANGED
@@ -1,10 +1,17 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: amq-protocol
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: -3702664410
|
5
5
|
prerelease: 6
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 7
|
9
|
+
- 0
|
10
|
+
- alpha
|
11
|
+
- 5
|
12
|
+
version: 0.7.0.alpha5
|
6
13
|
platform: ruby
|
7
|
-
authors:
|
14
|
+
authors:
|
8
15
|
- Jakub Stastny
|
9
16
|
- Michael S. Klishin
|
10
17
|
- Theo Hultberg
|
@@ -12,19 +19,21 @@ authors:
|
|
12
19
|
autorequire:
|
13
20
|
bindir: bin
|
14
21
|
cert_chain: []
|
15
|
-
|
22
|
+
|
23
|
+
date: 2011-05-29 00:00:00 Z
|
16
24
|
dependencies: []
|
17
|
-
|
18
|
-
is not an\n AMQP client: amq-protocol only handles serialization and deserialization.\n
|
19
|
-
|
20
|
-
email:
|
25
|
+
|
26
|
+
description: " amq-protocol is an AMQP 0.9.1 serialization library for Ruby. It is not an\n AMQP client: amq-protocol only handles serialization and deserialization.\n If you want to write your own AMQP client, this gem can help you with that.\n"
|
27
|
+
email:
|
21
28
|
- michael@novemberain.com
|
22
29
|
- stastny@101ideas.cz
|
23
30
|
executables: []
|
31
|
+
|
24
32
|
extensions: []
|
25
|
-
|
33
|
+
|
34
|
+
extra_rdoc_files:
|
26
35
|
- README.textile
|
27
|
-
files:
|
36
|
+
files:
|
28
37
|
- .gitignore
|
29
38
|
- .gitmodules
|
30
39
|
- .rspec
|
@@ -67,26 +76,38 @@ files:
|
|
67
76
|
- tasks.rb
|
68
77
|
homepage: http://github.com/ruby-amqp/amq-protocol
|
69
78
|
licenses: []
|
79
|
+
|
70
80
|
post_install_message:
|
71
81
|
rdoc_options: []
|
72
|
-
|
82
|
+
|
83
|
+
require_paths:
|
73
84
|
- lib
|
74
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
85
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
75
86
|
none: false
|
76
|
-
requirements:
|
77
|
-
- -
|
78
|
-
- !ruby/object:Gem::Version
|
79
|
-
|
80
|
-
|
87
|
+
requirements:
|
88
|
+
- - ">="
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
hash: 3
|
91
|
+
segments:
|
92
|
+
- 0
|
93
|
+
version: "0"
|
94
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
81
95
|
none: false
|
82
|
-
requirements:
|
83
|
-
- -
|
84
|
-
- !ruby/object:Gem::Version
|
96
|
+
requirements:
|
97
|
+
- - ">"
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
hash: 25
|
100
|
+
segments:
|
101
|
+
- 1
|
102
|
+
- 3
|
103
|
+
- 1
|
85
104
|
version: 1.3.1
|
86
105
|
requirements: []
|
106
|
+
|
87
107
|
rubyforge_project: amq-protocol
|
88
|
-
rubygems_version: 1.8.
|
108
|
+
rubygems_version: 1.8.4
|
89
109
|
signing_key:
|
90
110
|
specification_version: 3
|
91
111
|
summary: AMQP 0.9.1 encoder & decoder.
|
92
112
|
test_files: []
|
113
|
+
|