summaryrefslogtreecommitdiff
path: root/cpp/bindings/qpid/ruby/lib/qpid/message.rb
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/bindings/qpid/ruby/lib/qpid/message.rb')
-rw-r--r--cpp/bindings/qpid/ruby/lib/qpid/message.rb368
1 files changed, 0 insertions, 368 deletions
diff --git a/cpp/bindings/qpid/ruby/lib/qpid/message.rb b/cpp/bindings/qpid/ruby/lib/qpid/message.rb
deleted file mode 100644
index edef0ac2a0..0000000000
--- a/cpp/bindings/qpid/ruby/lib/qpid/message.rb
+++ /dev/null
@@ -1,368 +0,0 @@
-#
-# 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.
-#
-
-require 'cqpid'
-
-module Qpid
-
- module Messaging
-
- # A +Message+ represents an routable piece of information.
- #
- # The content for a message is automatically encoded and decoded.
- #
- class Message
-
- # Creates a new instance of +Message+.
- #
- # ==== Options
- #
- # * :content - The content.
- #
- # ==== Examples
- #
- # message = Qpid::Messaging::Message.new :content => "This is a message."
- #
- def initialize(args = {})
- @message_impl = (args[:impl] if args[:impl]) || nil
- @message_impl = Cqpid::Message.new if @message_impl.nil?
- @content = nil
- args = {} if args.nil?
- self.content = args[:content] if args[:content]
- end
-
- def message_impl # :nodoc:
- @message_impl
- end
-
- # Sets the address to which replies should be sent for the +Message+.
- #
- # *NOTE:* The address must be an instance of Address.
- #
- # ==== Options
- #
- # * address - an instance of +Address+
- #
- # ==== Examples
- #
- # msg.reply_to = Qpid:Messaging::Address.new "my-responses"
- #
- def reply_to=(address)
- raise ArgumentError, "Agument must be an Address" unless address.is_a? Qpid::Messaging::Address
- @message_impl.setReplyTo address.address_impl
- end
-
- # Returns the reply to address for the +Message+.
- #
- def reply_to
- address_impl = @message_impl.getReplyTo
- # only return an address if a reply to was specified
- Qpid::Messaging::Address.new(nil, nil, nil, nil, address_impl) if address_impl
- end
-
- # Sets the subject for the +Message+.
- #
- # ==== Options
- #
- # * subject - the subject
- #
- # ==== Examples
- #
- # msg.subject = "mysubject"
- #
- def subject=(subject); @message_impl.setSubject subject; end
-
- # Returns the subject of the +Message+.
- #
- # ==== Options
- #
- # puts "The subject is #{msg.subject}"
- #
- def subject; @message_impl.getSubject; end
-
- # Sets the content type for the +Message+.
- #
- # This should be set by the sending applicaton and indicates to
- # recipients of the message how to interpret or decode the content.
- #
- # By default, only dictionaries and maps are automatically given a content
- # type. If this content type is replaced then retrieving the content will
- # not behave correctly.
- #
- # ==== Options
- #
- # * content_type - the content type.
- #
- def content_type=(content_type); @message_impl.setContentType content_type; end
-
- # Returns the content type for the +Message+.
- #
- # ==== Examples
- #
- # case msg.content_type
- # when "myapp/image"
- # ctl.handle_image msg
- # end
- # when "myapp/audio"
- # ctl.handle_audio msg
- # end
- # end
- #
- def content_type; @message_impl.getContentType; end
-
- # Sets the message id.
- #
- # *NOTE:* this field must be a UUID type currently. A non-UUID value will
- # be converted to a zero UUID, though a blank ID will be left untouched.
- #
- # ==== Options
- #
- # * id - the id
- #
- # ==== Examples
- #
- #
- def message_id=(message_id); @message_impl.setMessageId message_id.to_s; end
-
- # Returns the message id.
- #
- # See +message_id=+ for details.
- def message_id; @message_impl.getMessageId; end
-
- # Sets the user id for the +Message+.
- #
- # This should in general be the user-id which was used when authenticating
- # the connection itself, as the messaging infrastructure will verify
- # this.
- #
- # See +Qpid::Messaging::Connection.authenticated_username+
- #
- # *NOTE:* If the id is not a +String+ then the id is set using
- # the object's string representation.
- #
- # ==== Options
- #
- # * id - the id
- #
- def user_id=(user_id); @message_impl.setUserId user_id; end
-
- # Returns the user id for the +Message+.
- #
- # See +user_id=+ for details.
- #
- def user_id; @message_impl.getUserId; end
-
- # Sets the correlation id of the +Message+.
- #
- # The correlation id can be used as part of a protocol for message
- # exchange patterns; e.g., a requestion-response pattern might require
- # the correlation id of the request and the response to match, or it
- # might use the message id of the request as the correlation id on
- # the response
- #
- # *NOTE:* If the id is not a +String+ then the id is setup using
- # the object's string representation.
- #
- # ==== Options
- #
- # * id - the id
- #
- def correlation_id=(correlation_id); @message_impl.setCorrelationId correlation_id; end
-
- # Returns the correlation id of the +Message+.
- #
- # *NOTE:* See +correlation_id=+ for details.
- #
- def correlation_id; @message_impl.getCorrelationId; end
-
- # Sets the priority of the +Message+.
- #
- # This may be used by the messaging infrastructure to prioritize
- # delivery of messages with higher priority.
- #
- # *NOTE:* If the priority is not an integer type then it is set using
- # the object's integer representation. If the integer value is greater
- # than 8-bits then only the first 8-bits are used.
- #
- # ==== Options
- #
- # * priority - the priority
- #
- def priority=(priority); @message_impl.setPriority priority; end
-
- # Returns the priority for the +Message+.
- #
- def priority; @message_impl.getPriority; end
-
- # Sets the time-to-live in milliseconds.
- #
- # ==== Options
- #
- # * duration - the number of milliseconds
- #
- def ttl=(duration)
- if duration.is_a? Qpid::Messaging::Duration
- @message_impl.setTtl duration.duration_impl
- else
- @message_impl.setTtl Cqpid::Duration.new duration.to_i
- end
- end
-
- # Returns the time-to-live in milliseconds.
- def ttl; Qpid::Messaging::Duration.new @message_impl.getTtl.getMilliseconds; end
-
- # Sets the durability of the +Message+.
- #
- # This is a hint to the messaging infrastructure that the message
- # should be persisted or otherwise stored. This helps to ensure
- # that th emessage is not lost during to failures or a shutdown.
- #
- # ==== Options
- #
- # * durable - the durability flag (def. false)
- #
- def durable=(durable); @message_impl.setDurable durable; end
-
- # Returns the durability for the +Message+.
- #
- def durable; @message_impl.getDurable; end
-
- # This is a hint to the messaging infrastructure that if de-duplication
- # is required, that this message should be examined to determine if it
- # is a duplicate.
- #
- # ==== Options
- #
- # * redelivered - sets the redelivered state (def. false)
- #
- # ==== Examples
- #
- # # processed is an array of processed message ids
- # msg.redelivered = true if processed.include? msg.message_id
- #
- def redelivered=(redelivered); @message_impl.setRedelivered redelivered; end
-
- # Returns whether the +Message+ has been marked as redelivered.
- #
- def redelivered; @message_impl.getRedelivered; end
-
- # Returns all named properties.
- #
- # *NOTE:* It is recommended to use the []= method for
- # retrieving and setting properties. Using this method may
- # result in non-deterministic behavior.
- #
- def properties; @message_impl.getProperties; end
-
- # Returns the value for the named property.
- #
- # ==== Options
- #
- # * name - the property name
- #
- # ==== Examples
- #
- # # use of message properties to mark a message as digitally signed
- # verify(msg) if msg[:signed]
- #
- def [](key); self.properties[key.to_s]; end
-
- # Assigns a value to the named property.
- #
- # *NOTE:* Both the key or the value may be a symbol, but they will
- # both be converted to a +String+ for ease of transport.
- #
- # ==== Options
- #
- # * name - the property name
- # * value - the property value
- def []=(key, value); @message_impl.setProperty(key.to_s, value.to_s); end
-
- # Sets the content for the +Message+.
- #
- # Content is automatically encoded for Array and Hash types. Other types
- # need to set their own content types (via +content_type+) in order to
- # specify how recipients should process the content.
- #
- # ==== Options
- #
- # * content - the content
- #
- # ==== Examples
- #
- # msg.content = "This is a simple message." # a simple message
- # msg.content = {:foo => :bar} # content is automatically encoded
- #
- def content=(content)
- content_type = nil
- @content = content
- case @content
- when Hash
- content_type = "amqp/map"
- new_content = {}
- content.each_pair{|key, value| new_content[key.to_s] = value.to_s}
- @content = new_content
- when Array
- new_content = []
- content_type = "amqp/list"
- content.each {|element| new_content << element.to_s}
- @content = new_content
- end
- if content_type.nil?
- @message_impl.setContent @content
- else
- Qpid::Messaging.encode @content, self, content_type
- end
- end
-
- # Returns the content of the +Message+.
- #
- # Content is automatically decoded based on the specified content type.
- # If the content type is application-specific, then no decoding is
- # performed and the content is returnedas a +String+ representation.
- #
- # For example, if an array of integers are sent, then the receiver will
- # find the message content to be an array of String objects, where each
- # String is a representation of the sent integer value.
- #
- def content
- if @content.nil?
- @content = @message_impl.getContent
-
- # decode the content is necessary if it
- # has an encoded content type
- if ["amqp/list", "amqp/map"].include? @message_impl.getContentType
- @content = Qpid::Messaging.decode(self,
- @message_impl.getContentType)
- end
-
- end
- @content
- end
-
- # Returns the content's size.
- #
- def content_size; @message_impl.getContentSize; end
-
- end
-
- end
-
-end
-