rabbitmq 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rabbitmq/channel.rb +13 -14
- data/lib/rabbitmq/ffi.rb +17 -0
- data/lib/rabbitmq/ffi/ext.rb +34 -2
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7ea9090c210d60db3bf5571f6408f9a91a9fe158
|
4
|
+
data.tar.gz: b5c814e43a019e30bd803216b258f90c29510e6e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 26478dc891d275f8a8fe7b2ce5112974ce0c7d2fc7c54a7edbd9f2fe15ceb33a13193c8b2dacd12423840beb577aa772bd0091cfd2f1af88e6f9af305dd2fd50
|
7
|
+
data.tar.gz: 9d0dd89cbe2170c473f89f5f2e137df725187401a2ff29165828c475b7b56dfc6b5dd204c085442837e7c41bf3fcea945c176218cc1d140546e44dd8eda46327
|
data/lib/rabbitmq/channel.rb
CHANGED
@@ -227,20 +227,19 @@ module RabbitMQ
|
|
227
227
|
exchange = FFI::Bytes.from_s(exchange, true)
|
228
228
|
routing_key = FFI::Bytes.from_s(routing_key, true)
|
229
229
|
properties = FFI::BasicProperties.new.apply(
|
230
|
-
content_type: opts.fetch(:content_type,
|
231
|
-
content_encoding: opts.fetch(:content_encoding,
|
232
|
-
headers: opts.fetch(:headers,
|
233
|
-
delivery_mode: (opts.fetch(:persistent,
|
234
|
-
priority: opts.fetch(:priority,
|
235
|
-
correlation_id: opts.fetch(:correlation_id,
|
236
|
-
reply_to: opts.fetch(:reply_to,
|
237
|
-
expiration: opts.fetch(:expiration,
|
238
|
-
message_id: opts.fetch(:message_id,
|
239
|
-
timestamp: opts.fetch(:timestamp,
|
240
|
-
type: opts.fetch(:type,
|
241
|
-
|
242
|
-
|
243
|
-
cluster_id: opts.fetch(:cluster_id, "")
|
230
|
+
content_type: opts.fetch(:content_type, nil),
|
231
|
+
content_encoding: opts.fetch(:content_encoding, nil),
|
232
|
+
headers: opts.fetch(:headers, {}),
|
233
|
+
delivery_mode: (opts.fetch(:persistent, false) ? :persistent : :nonpersistent),
|
234
|
+
priority: opts.fetch(:priority, 0),
|
235
|
+
correlation_id: opts.fetch(:correlation_id, nil),
|
236
|
+
reply_to: opts.fetch(:reply_to, nil),
|
237
|
+
expiration: opts.fetch(:expiration, nil),
|
238
|
+
message_id: opts.fetch(:message_id, nil),
|
239
|
+
timestamp: opts.fetch(:timestamp, 0),
|
240
|
+
type: opts.fetch(:type, nil),
|
241
|
+
app_id: opts.fetch(:app_id, nil),
|
242
|
+
cluster_id: opts.fetch(:cluster_id, nil)
|
244
243
|
)
|
245
244
|
|
246
245
|
Util.error_check :"publishing a message",
|
data/lib/rabbitmq/ffi.rb
CHANGED
@@ -696,6 +696,23 @@ module RabbitMQ
|
|
696
696
|
:user_id, Bytes,
|
697
697
|
:app_id, Bytes,
|
698
698
|
:cluster_id, Bytes
|
699
|
+
|
700
|
+
FLAGS = {
|
701
|
+
content_type: (1 << 15),
|
702
|
+
content_encoding: (1 << 14),
|
703
|
+
headers: (1 << 13),
|
704
|
+
delivery_mode: (1 << 12),
|
705
|
+
priority: (1 << 11),
|
706
|
+
correlation_id: (1 << 10),
|
707
|
+
reply_to: (1 << 9),
|
708
|
+
expiration: (1 << 8),
|
709
|
+
message_id: (1 << 7),
|
710
|
+
timestamp: (1 << 6),
|
711
|
+
type: (1 << 5),
|
712
|
+
user_id: (1 << 4),
|
713
|
+
app_id: (1 << 3),
|
714
|
+
cluster_id: (1 << 2),
|
715
|
+
}
|
699
716
|
end
|
700
717
|
|
701
718
|
attach_function :amqp_channel_open, [ConnectionState, Channel], ChannelOpenOk.ptr, **opts
|
data/lib/rabbitmq/ffi/ext.rb
CHANGED
@@ -181,11 +181,12 @@ module RabbitMQ
|
|
181
181
|
module MethodClassMixin
|
182
182
|
def apply(borrow=false, **params)
|
183
183
|
params.each do |key, value|
|
184
|
-
next if
|
184
|
+
next if value.nil? || !writable_key?(key)
|
185
185
|
case value
|
186
186
|
when String; value = FFI::Bytes.from_s(value, borrow)
|
187
187
|
when Hash; value = FFI::Table.from(value, borrow)
|
188
188
|
end
|
189
|
+
key_applied_hook(key)
|
189
190
|
self[key] = value
|
190
191
|
end
|
191
192
|
self
|
@@ -194,7 +195,7 @@ module RabbitMQ
|
|
194
195
|
def to_h(free=false)
|
195
196
|
result = {}
|
196
197
|
self.members.each do |key| [key, self[key]]
|
197
|
-
next
|
198
|
+
next unless readable_key?(key)
|
198
199
|
value = self[key]
|
199
200
|
case value
|
200
201
|
when FFI::Bytes; value = value.to_s(free)
|
@@ -219,12 +220,43 @@ module RabbitMQ
|
|
219
220
|
end
|
220
221
|
clear
|
221
222
|
end
|
223
|
+
|
224
|
+
def key_applied_hook(key)
|
225
|
+
# do nothing here
|
226
|
+
end
|
227
|
+
|
228
|
+
def readable_key?(key)
|
229
|
+
key != :dummy
|
230
|
+
end
|
231
|
+
|
232
|
+
def writable_key?(key)
|
233
|
+
key != :dummy
|
234
|
+
end
|
222
235
|
end
|
223
236
|
|
224
237
|
Method::MethodClasses.each { |_, kls| kls.send(:include, MethodClassMixin) }
|
225
238
|
|
226
239
|
BasicProperties.send(:include, MethodClassMixin)
|
227
240
|
|
241
|
+
class BasicProperties
|
242
|
+
def key_applied_hook(key)
|
243
|
+
flag_bit = FLAGS[key]
|
244
|
+
return unless flag_bit
|
245
|
+
self[:_flags] = (self[:_flags] | flag_bit)
|
246
|
+
end
|
247
|
+
|
248
|
+
def readable_key?(key)
|
249
|
+
return false if key == :_flags
|
250
|
+
flag_bit = FLAGS[key]
|
251
|
+
return true unless flag_bit
|
252
|
+
return (flag_bit & self[:_flags]) != 0
|
253
|
+
end
|
254
|
+
|
255
|
+
def writable_key?(key)
|
256
|
+
true
|
257
|
+
end
|
258
|
+
end
|
259
|
+
|
228
260
|
class FramePayloadProperties
|
229
261
|
def decoded
|
230
262
|
BasicProperties.new(self[:decoded])
|