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