rabbitmq 1.0.1 → 1.1.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 +4 -4
- data/lib/rabbitmq/channel.rb +12 -0
- data/lib/rabbitmq/ffi/error.rb +1 -1
- data/lib/rabbitmq/ffi/ext.rb +1 -0
- data/lib/rabbitmq/ffi/ext/array.rb +46 -0
- data/lib/rabbitmq/ffi/ext/field_value.rb +21 -11
- data/lib/rabbitmq/ffi/ext/table.rb +1 -1
- data/lib/rabbitmq/util.rb +5 -5
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3682bae0564eed99f1fd3ddf9c7c1d8d09705e6b
|
4
|
+
data.tar.gz: 8dae54b8f8606e465da48509a85e7472d3ccff9f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8eaf39f8a7f9f6f0d5c9b080ff1f320f3cf7bd025f9a65f70dc923cc7af204353af9635772c13b0a1a1890736aa318d7d9d8a543715cf545a22c8a019eb07966
|
7
|
+
data.tar.gz: 9cef2f9e99f3548bf626fb68a4c7173915738e460ad4bc2c16174b0eaa713d9917cfd86760e066e8ca8dfb8a6983033be83fc24ecb1fc155712c1e4e1718fa05
|
data/lib/rabbitmq/channel.rb
CHANGED
@@ -222,6 +222,18 @@ module RabbitMQ
|
|
222
222
|
fetch_response :tx_rollback_ok
|
223
223
|
end
|
224
224
|
|
225
|
+
##
|
226
|
+
# Confirm mode operations
|
227
|
+
|
228
|
+
def confirm_select
|
229
|
+
send_request :confirm_select
|
230
|
+
fetch_response :confirm_select_ok
|
231
|
+
end
|
232
|
+
|
233
|
+
def fetch_confirm
|
234
|
+
fetch_response [:basic_ack, :basic_nack, :basic_reject]
|
235
|
+
end
|
236
|
+
|
225
237
|
##
|
226
238
|
# Message operations
|
227
239
|
|
data/lib/rabbitmq/ffi/error.rb
CHANGED
data/lib/rabbitmq/ffi/ext.rb
CHANGED
@@ -0,0 +1,46 @@
|
|
1
|
+
|
2
|
+
module RabbitMQ
|
3
|
+
module FFI
|
4
|
+
|
5
|
+
class Array
|
6
|
+
include Enumerable
|
7
|
+
|
8
|
+
def each(*a, &b)
|
9
|
+
entry_ptr = self[:entries]
|
10
|
+
entries = self[:num_entries].times.map do |i|
|
11
|
+
FFI::FieldValue.new(entry_ptr + i * FFI::FieldValue.size)
|
12
|
+
end
|
13
|
+
entries.each(*a, &b)
|
14
|
+
end
|
15
|
+
|
16
|
+
def to_a(free=false)
|
17
|
+
result = self.map do |item|
|
18
|
+
item.to_value(free)
|
19
|
+
end
|
20
|
+
|
21
|
+
clear if free
|
22
|
+
result
|
23
|
+
end
|
24
|
+
|
25
|
+
def free!
|
26
|
+
self.each(&:free!)
|
27
|
+
FFI.free(self[:entries])
|
28
|
+
clear
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.from_a(items)
|
32
|
+
size = items.size
|
33
|
+
entry_ptr = Util.mem_ptr(size * FFI::FieldValue.size, release: false)
|
34
|
+
items.each_with_index do |item, idx|
|
35
|
+
FFI::FieldValue.new(entry_ptr + idx * FFI::FieldValue.size).apply(item)
|
36
|
+
end
|
37
|
+
|
38
|
+
obj = new
|
39
|
+
obj[:num_entries] = size
|
40
|
+
obj[:entries] = entry_ptr
|
41
|
+
obj
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
end
|
@@ -19,8 +19,7 @@ module RabbitMQ
|
|
19
19
|
when :utf8; value.to_s(free).force_encoding(Encoding::UTF_8)
|
20
20
|
when :timestamp; Time.at(value / 1000.0)
|
21
21
|
when :table; value.to_h(free)
|
22
|
-
when :array; value.
|
23
|
-
when :decimal; value.to_value_not_yet_implemented!
|
22
|
+
when :array; value.to_a(free)
|
24
23
|
else value
|
25
24
|
end
|
26
25
|
|
@@ -29,19 +28,30 @@ module RabbitMQ
|
|
29
28
|
end
|
30
29
|
|
31
30
|
def free!
|
32
|
-
kind
|
33
|
-
value
|
31
|
+
kind = self[:kind]
|
32
|
+
value = self[:value][value_member(kind)]
|
34
33
|
value.free! if value.respond_to? :free!
|
35
|
-
|
34
|
+
self
|
36
35
|
end
|
37
36
|
|
38
|
-
def
|
39
|
-
|
40
|
-
|
41
|
-
when
|
42
|
-
|
37
|
+
def apply(value)
|
38
|
+
self[:kind], self[:value] = case value
|
39
|
+
when ::String; [:bytes, FieldValueValue.new(Bytes.from_s(value).pointer)]
|
40
|
+
when ::Symbol; [:bytes, FieldValueValue.new(Bytes.from_s(value.to_s).pointer)]
|
41
|
+
when ::Array; [:array, FieldValueValue.new(Array.from_a(value).pointer)]
|
42
|
+
when ::Hash; [:table, FieldValueValue.new(Table.from(value).pointer)]
|
43
|
+
when ::Fixnum; [:i64, (v=FieldValueValue.new; v[:i64]=value; v)]
|
44
|
+
when ::Float; [:f64, (v=FieldValueValue.new; v[:f64]=value; v)]
|
45
|
+
when ::Time; [:timestamp, (v=FieldValueValue.new; v[:u64]=value.to_i*1000; v)]
|
46
|
+
when true; [:boolean, (v=FieldValueValue.new; v[:boolean]=true; v)]
|
47
|
+
when false; [:boolean, (v=FieldValueValue.new; v[:boolean]=false; v)]
|
48
|
+
else raise NotImplementedError, "#{self.class}.from(#<#{value.class}>)"
|
43
49
|
end
|
44
|
-
|
50
|
+
self
|
51
|
+
end
|
52
|
+
|
53
|
+
def self.from(value)
|
54
|
+
new.apply(value)
|
45
55
|
end
|
46
56
|
end
|
47
57
|
|
data/lib/rabbitmq/util.rb
CHANGED
@@ -10,30 +10,30 @@ module RabbitMQ
|
|
10
10
|
lowercase_name.to_s.gsub(/((?:\A\w)|(?:_\w))/) { |x| x[-1].upcase }
|
11
11
|
end
|
12
12
|
|
13
|
-
def error_check
|
13
|
+
def error_check(action, status)
|
14
14
|
return if status == :ok
|
15
15
|
raise RabbitMQ::FFI::Error.lookup(status), "while #{action}"
|
16
16
|
end
|
17
17
|
|
18
|
-
def null_check
|
18
|
+
def null_check(action, obj)
|
19
19
|
return unless obj.nil?
|
20
20
|
raise RabbitMQ::FFI::Error, "while #{action} - got unexpected null"
|
21
21
|
end
|
22
22
|
|
23
|
-
def mem_ptr
|
23
|
+
def mem_ptr(size, count: 1, clear: true, release: true)
|
24
24
|
ptr = ::FFI::MemoryPointer.new(size, count, clear)
|
25
25
|
ptr.autorelease = false unless release
|
26
26
|
ptr
|
27
27
|
end
|
28
28
|
|
29
|
-
def strdup_ptr
|
29
|
+
def strdup_ptr(str, **kwargs)
|
30
30
|
str = str + "\x00"
|
31
31
|
ptr = mem_ptr(str.bytesize, **kwargs)
|
32
32
|
ptr.write_string(str)
|
33
33
|
ptr
|
34
34
|
end
|
35
35
|
|
36
|
-
def connection_info
|
36
|
+
def connection_info(url=nil, **overrides)
|
37
37
|
info = FFI::ConnectionInfo.new
|
38
38
|
FFI.amqp_default_connection_info(info)
|
39
39
|
result = info.to_h
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rabbitmq
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joe McIlvain
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-07-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ffi
|
@@ -131,6 +131,7 @@ files:
|
|
131
131
|
- lib/rabbitmq/ffi.rb
|
132
132
|
- lib/rabbitmq/ffi/error.rb
|
133
133
|
- lib/rabbitmq/ffi/ext.rb
|
134
|
+
- lib/rabbitmq/ffi/ext/array.rb
|
134
135
|
- lib/rabbitmq/ffi/ext/basic_properties.rb
|
135
136
|
- lib/rabbitmq/ffi/ext/bytes.rb
|
136
137
|
- lib/rabbitmq/ffi/ext/connection_info.rb
|