summaryrefslogtreecommitdiff
path: root/cpp/bindings/qpid/ruby/lib/qpid_messaging/encoding.rb
diff options
context:
space:
mode:
authorKim van der Riet <kpvdr@apache.org>2013-02-28 16:14:30 +0000
committerKim van der Riet <kpvdr@apache.org>2013-02-28 16:14:30 +0000
commit9c73ef7a5ac10acd6a50d5d52bd721fc2faa5919 (patch)
tree2a890e1df09e5b896a9b4168a7b22648f559a1f2 /cpp/bindings/qpid/ruby/lib/qpid_messaging/encoding.rb
parent172d9b2a16cfb817bbe632d050acba7e31401cd2 (diff)
downloadqpid-python-asyncstore.tar.gz
Update from trunk r1375509 through r1450773asyncstore
git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/asyncstore@1451244 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/bindings/qpid/ruby/lib/qpid_messaging/encoding.rb')
-rw-r--r--cpp/bindings/qpid/ruby/lib/qpid_messaging/encoding.rb75
1 files changed, 75 insertions, 0 deletions
diff --git a/cpp/bindings/qpid/ruby/lib/qpid_messaging/encoding.rb b/cpp/bindings/qpid/ruby/lib/qpid_messaging/encoding.rb
new file mode 100644
index 0000000000..ac0fbc32a7
--- /dev/null
+++ b/cpp/bindings/qpid/ruby/lib/qpid_messaging/encoding.rb
@@ -0,0 +1,75 @@
+#--
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#++
+
+module Qpid
+
+ module Messaging
+
+ # Encodes the supplied content into the given message.
+ def self.encode content, message, encoding = nil # :nodoc:
+ Cqpid::encode content, message.message_impl, encoding
+ end
+
+ # Decodes and returns the message's content.
+ def self.decode(message, content_type = nil) # :nodoc:
+ content_type = message.content_type if content_type.nil?
+
+ case content_type
+ when "amqp/map"
+ return Cqpid.decodeMap message.message_impl
+ when "amqp/list"
+ return Cqpid.decodeList message.message_impl
+ end
+
+ message.content
+ end
+
+ # Takes as input any type and converts anything that's a symbol
+ # into a string.
+ def self.stringify(value) # :nodoc:
+ # set the default value
+ result = value
+
+ case value
+
+ when Symbol
+ result = value.to_s
+
+ when Hash
+ result = {}
+ value.each_pair do |key, value|
+ result[stringify(key)] = stringify(value)
+ end
+
+ when Array
+ result = []
+ value.each do |element|
+ result << stringify(element)
+ end
+
+ end
+
+ return result
+
+ end
+
+ end
+
+end
+