qpid_messaging 0.18.4 → 0.18.5
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.
- data/lib/qpid_messaging/encoding.rb +33 -16
- data/lib/qpid_messaging/message.rb +5 -11
- data/lib/qpid_messaging/version.rb +1 -1
- metadata +1 -1
@@ -23,35 +23,52 @@ module Qpid
|
|
23
23
|
|
24
24
|
# Encodes the supplied content into the given message.
|
25
25
|
def self.encode content, message, encoding = nil
|
26
|
-
|
27
|
-
case content
|
28
|
-
when Hash
|
29
|
-
prepared = {}
|
30
|
-
content.each_pair do |key,value|
|
31
|
-
prepared[key.to_s] = value.to_s
|
32
|
-
end
|
33
|
-
Cqpid::encode prepared, message.message_impl
|
34
|
-
when Array
|
35
|
-
prepared = []
|
36
|
-
content.each {|value| prepared << value.to_s}
|
37
|
-
Cqpid::encode prepared, message.message_impl
|
38
|
-
end
|
26
|
+
Cqpid::encode content, message.message_impl, encoding
|
39
27
|
end
|
40
28
|
|
41
29
|
# Decodes and returns the message's content.
|
42
30
|
def self.decode(message, content_type = nil)
|
43
|
-
content_type = message.content_type
|
31
|
+
content_type = message.content_type if content_type.nil?
|
44
32
|
|
45
33
|
case content_type
|
46
34
|
when "amqp/map"
|
47
|
-
Cqpid.decodeMap message.message_impl
|
35
|
+
return Cqpid.decodeMap message.message_impl
|
48
36
|
when "amqp/list"
|
49
|
-
Cqpid.decodeList message.message_impl
|
37
|
+
return Cqpid.decodeList message.message_impl
|
50
38
|
end
|
51
39
|
|
52
40
|
message.content
|
53
41
|
end
|
54
42
|
|
43
|
+
# Takes as input any type and converts anything that's a symbol
|
44
|
+
# into a string.
|
45
|
+
def self.stringify(value)
|
46
|
+
# set the default value
|
47
|
+
result = value
|
48
|
+
|
49
|
+
case value
|
50
|
+
|
51
|
+
when Symbol
|
52
|
+
result = value.to_s
|
53
|
+
|
54
|
+
when Hash
|
55
|
+
result = {}
|
56
|
+
value.each_pair do |key, value|
|
57
|
+
result[stringify(key)] = stringify(value)
|
58
|
+
end
|
59
|
+
|
60
|
+
when Array
|
61
|
+
result = []
|
62
|
+
value.each do |element|
|
63
|
+
result << stringify(element)
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
|
68
|
+
return result
|
69
|
+
|
70
|
+
end
|
71
|
+
|
55
72
|
end
|
56
73
|
|
57
74
|
end
|
@@ -283,14 +283,14 @@ module Qpid
|
|
283
283
|
|
284
284
|
# Assigns a value to the named property.
|
285
285
|
#
|
286
|
-
# *NOTE:* Both the key or the value may be a symbol, but they will
|
287
|
-
# both be converted to a +String+ for ease of transport.
|
288
|
-
#
|
289
286
|
# ==== Options
|
290
287
|
#
|
291
288
|
# * name - the property name
|
292
289
|
# * value - the property value
|
293
|
-
def []=(key, value)
|
290
|
+
def []=(key, value)
|
291
|
+
@message_impl.setProperty(key.to_s,
|
292
|
+
Qpid::Messaging.stringify(value))
|
293
|
+
end
|
294
294
|
|
295
295
|
# Sets the content for the +Message+.
|
296
296
|
#
|
@@ -309,18 +309,12 @@ module Qpid
|
|
309
309
|
#
|
310
310
|
def content=(content)
|
311
311
|
content_type = nil
|
312
|
-
@content = content
|
312
|
+
@content = Qpid::Messaging.stringify(content)
|
313
313
|
case @content
|
314
314
|
when Hash
|
315
315
|
content_type = "amqp/map"
|
316
|
-
new_content = {}
|
317
|
-
content.each_pair{|key, value| new_content[key.to_s] = value.to_s}
|
318
|
-
@content = new_content
|
319
316
|
when Array
|
320
|
-
new_content = []
|
321
317
|
content_type = "amqp/list"
|
322
|
-
content.each {|element| new_content << element.to_s}
|
323
|
-
@content = new_content
|
324
318
|
end
|
325
319
|
if content_type.nil?
|
326
320
|
@message_impl.setContent @content
|