diff options
Diffstat (limited to 'cpp/bindings/qpid/ruby/lib/qpid_messaging/encoding.rb')
-rw-r--r-- | cpp/bindings/qpid/ruby/lib/qpid_messaging/encoding.rb | 75 |
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 + |