class Qpid::Proton::Message

A Message represents an addressable quantity of data.

Message Body

The message body can be set using the body= method. The message will then attempt to determine how exactly to encode the content.

Examples

To create a message for sending:

# send a simple text message
msg = Qpid::Proton::Message.new
msg.body = "STATE: update"

# send a binary chunk of data
data = File.binread("/home/qpid/binfile.tar.gz")
msg = Qpid::Proton::Message.new
msg.body = Qpid::Proton::BinaryString.new(data)

Public Class Methods

new() click to toggle source

Creates a new Message instance.

# File lib/qpid_proton/message.rb, line 124
def initialize
  @impl = Cproton.pn_message
  ObjectSpace.define_finalizer(self, self.class.finalize!(@impl))
  @properties = {}
  @instructions = {}
  @annotations = {}
  @body = nil
end

Public Instance Methods

[](name) click to toggle source

Retrieves the value for the specified property name. If not found, then it returns nil.

# File lib/qpid_proton/message.rb, line 562
def [](name)
  @properties[name]
end
[]=(name, value) click to toggle source

Assigns the value given to the named property.

Arguments

  • name - the property name

  • value - the property value

# File lib/qpid_proton/message.rb, line 555
def []=(name, value)
  @properties[name] = value
end
address() click to toggle source

Returns the destination address.

# File lib/qpid_proton/message.rb, line 335
def address
  Cproton.pn_message_get_address(@impl)
end
address=(address) click to toggle source

Sets the destination address.

Options

  • address - the address

# File lib/qpid_proton/message.rb, line 329
def address=(address)
  Cproton.pn_message_set_address(@impl, address)
end
annotations() click to toggle source

Returns the annotations for this message.

# File lib/qpid_proton/message.rb, line 586
def annotations
  @annotations
end
annotations=(annotations) click to toggle source

Assigns annotations to this message.

# File lib/qpid_proton/message.rb, line 592
def annotations=(annotations)
  @annotations = annotations
end
body() click to toggle source

Returns the body property of the message.

# File lib/qpid_proton/message.rb, line 598
def body
  @body
end
body=(body) click to toggle source

Assigns a new value to the body of the message.

# File lib/qpid_proton/message.rb, line 604
def body=(body)
  @body = body
end
clear() click to toggle source

Clears the state of the Message. This allows a single instance of Message to be reused.

# File lib/qpid_proton/message.rb, line 157
def clear
  Cproton.pn_message_clear(@impl)
  @properties.clear unless @properties.nil?
  @instructions.clear unless @instructions.nil?
  @annotations.clear unless @annotations.nil?
  @body = nil
end
content_encoding() click to toggle source

Returns the content encoding type.

# File lib/qpid_proton/message.rb, line 442
def content_encoding
  Cproton.pn_message_get_content_encoding(@impl)
end
content_encoding=(encoding) click to toggle source

Sets the content encoding type.

Options

  • encoding - the content encoding

# File lib/qpid_proton/message.rb, line 436
def content_encoding=(encoding)
  Cproton.pn_message_set_content_encoding(@impl, encoding)
end
content_type() click to toggle source

Returns the content type

# File lib/qpid_proton/message.rb, line 426
def content_type
  Cproton.pn_message_get_content_type(@impl)
end
content_type=(content_type) click to toggle source

Sets the content type.

Options

# File lib/qpid_proton/message.rb, line 420
def content_type=(content_type)
  Cproton.pn_message_set_content_type(@impl, content_type)
end
correlation_id() click to toggle source

Returns the correlation id.

# File lib/qpid_proton/message.rb, line 383
def correlation_id
  Cproton.pn_message_get_correlation_id(@impl)
end
correlation_id=(id) click to toggle source

Sets the correlation id.

Options

  • id - the correlation id

# File lib/qpid_proton/message.rb, line 377
def correlation_id=(id)
  Cproton.pn_message_set_correlation_id(@impl, id)
end
creation_time() click to toggle source

Returns the creation time.

# File lib/qpid_proton/message.rb, line 478
def creation_time
  Cproton.pn_message_get_creation_time(@impl)
end
creation_time=(time) click to toggle source

Sets the creation time.

Options

  • time - the creation time

# File lib/qpid_proton/message.rb, line 470
def creation_time=(time)
  raise TypeError.new("invalid time: #{time}") if time.nil?
  raise ArgumentError.new("time cannot be negative") if time < 0
  Cproton.pn_message_set_creation_time(@impl, time)
end
decode(encoded) click to toggle source

Decodes a message from supplied AMQP data and returns the number of bytes consumed.

Options

  • encoded - the encoded data

# File lib/qpid_proton/message.rb, line 53
def decode(encoded)
  check(Cproton.pn_message_decode(@impl, encoded, encoded.length))

  post_decode
end
delete_property(name) click to toggle source

Deletes the named property.

# File lib/qpid_proton/message.rb, line 568
def delete_property(name)
  @properties.delete(name)
end
delivery_count() click to toggle source

Returns the delivery count for the message.

This is the number of delivery attempts for the given message.

# File lib/qpid_proton/message.rb, line 280
def delivery_count
  Cproton.pn_message_get_delivery_count(@impl)
end
delivery_count=(count) click to toggle source

Sets the delivery count for the message.

See ::delivery_count for more details.

Options

  • count - the delivery count

# File lib/qpid_proton/message.rb, line 269
def delivery_count=(count)
  raise ArgumentError.new("invalid count: #{count}") if count.nil? || !([Float, Fixnum].include?(count.class))
  raise RangeError.new("count out of range: #{count}") if count < 0

  Cproton.pn_message_set_delivery_count(@impl, count.floor)
end
durable() click to toggle source

Returns the durable property.

The durable property indicates that the emessage should be held durably by any intermediaries taking responsibility for the message.

Examples

msg = Qpid::Proton::Message.new
msg.durable = true
# File lib/qpid_proton/message.rb, line 206
def durable
  Cproton.pn_message_is_durable(@impl)
end
durable=(state) click to toggle source

Sets the durable flag.

See ::durable for more details on message durability.

Options

  • state - the durable state

# File lib/qpid_proton/message.rb, line 191
def durable=(state)
  raise TypeError.new("state cannot be nil") if state.nil?
  Cproton.pn_message_set_durable(@impl, state)
end
encode() click to toggle source

Encodes the message.

# File lib/qpid_proton/message.rb, line 84
def encode
  pre_encode
  size = 16
  loop do
    error, data = Cproton::pn_message_encode(@impl, size)
    if error == Qpid::Proton::Error::OVERFLOW
      size *= 2
    else
      check(error)
      return data
    end
  end
end
errno() click to toggle source

Returns the most recent error number.

# File lib/qpid_proton/message.rb, line 167
def errno
  Cproton.pn_message_errno(@impl)
end
error() click to toggle source

Returns the most recent error message.

# File lib/qpid_proton/message.rb, line 173
def error
  Cproton.pn_error_text(Cproton.pn_message_error(@impl))
end
error?() click to toggle source

Returns whether there is currently an error reported.

# File lib/qpid_proton/message.rb, line 179
def error?
  !Cproton.pn_message_errno(@impl).zero?
end
expires() click to toggle source

Returns the expiration time.

# File lib/qpid_proton/message.rb, line 460
def expires
  Cproton.pn_message_get_expiry_time(@impl)
end
expires=(time) click to toggle source

Sets the expiration time.

Options

  • time - the expiry time

# File lib/qpid_proton/message.rb, line 452
def expires=(time)
  raise TypeError.new("invalid expiry time: #{time}") if time.nil?
  raise ArgumentError.new("expiry time cannot be negative: #{time}") if time < 0
  Cproton.pn_message_set_expiry_time(@impl, time)
end
first_acquirer=(state) click to toggle source

Sets whether this is the first time the message was acquired.

See ::first_acquirer? for more details.

Options

  • state - true if claiming the message

# File lib/qpid_proton/message.rb, line 256
def first_acquirer=(state)
  raise TypeError.new("invalid state: #{state}") if state.nil? || !([TrueClass, FalseClass].include?(state.class))
  Cproton.pn_message_set_first_acquirer(@impl, state)
end
first_acquirer?() click to toggle source

Returns whether this is the first acquirer.

# File lib/qpid_proton/message.rb, line 287
def first_acquirer?
  Cproton.pn_message_is_first_acquirer(@impl)
end
format() click to toggle source

Returns the message format

Warning: This method has been deprecated.

Note

This method is now deprecated.

# File lib/qpid_proton/message.rb, line 410
def format
  Qpid::Proton::MessageFormat.by_value(Cproton.pn_message_get_format(@impl))
end
format=(format) click to toggle source

Sets the message format.

See MessageFormat for more details on formats.

Warning: This method has been deprecated.

Options

  • format - the format

# File lib/qpid_proton/message.rb, line 397
def format=(format)
  raise TypeError.new("invalid message format: #{format}") if (format.nil? || !format.kind_of?(Qpid::Proton::MessageFormat))
  Cproton.pn_message_set_format(@impl, format.value)
end
group_id() click to toggle source

Returns the group id.

# File lib/qpid_proton/message.rb, line 494
def group_id
  Cproton.pn_message_get_group_id(@impl)
end
group_id=(id) click to toggle source

Sets the group id.

Options

  • id - the group id

# File lib/qpid_proton/message.rb, line 488
def group_id=(id)
  Cproton.pn_message_set_group_id(@impl, id)
end
group_sequence() click to toggle source

Returns the group sequence number.

# File lib/qpid_proton/message.rb, line 511
def group_sequence
  Cproton.pn_message_get_group_sequence(@impl)
end
group_sequence=(seq) click to toggle source

Sets the group sequence number.

Options

  • seq - the sequence number

# File lib/qpid_proton/message.rb, line 504
def group_sequence=(seq)
  raise TypeError.new("invalid seq: #{seq}") if seq.nil?
  Cproton.pn_message_set_group_sequence(@impl, seq)
end
id() click to toggle source

Returns the message id.

# File lib/qpid_proton/message.rb, line 303
def id
  Cproton.pn_message_get_id(@impl)
end
id=(id) click to toggle source

Sets the message id.

Options

  • id = the id

# File lib/qpid_proton/message.rb, line 297
def id=(id)
  Cproton.pn_message_set_id(@impl, id)
end
instructions() click to toggle source

Returns the instructions for this message.

# File lib/qpid_proton/message.rb, line 574
def instructions
  @instructions
end
instructions=(instr) click to toggle source

Assigns instructions to this message.

# File lib/qpid_proton/message.rb, line 580
def instructions=(instr)
  @instructions = instr
end
priority() click to toggle source

Returns the priority.

# File lib/qpid_proton/message.rb, line 226
def priority
  Cproton.pn_message_get_priority(@impl)
end
priority=(priority) click to toggle source

Sets the priority.

NOTE: Priority values are limited to the range [0,255].

Options

  • priority - the priority value

# File lib/qpid_proton/message.rb, line 218
def priority=(priority)
  raise TypeError.new("invalid priority: #{priority}") if priority.nil? || !([Float, Fixnum].include?(priority.class))
  raise RangeError.new("priority out of range: #{priority}") if ((priority > 255) || (priority < 0))
  Cproton.pn_message_set_priority(@impl, priority.floor)
end
properties() click to toggle source

Returns the list of property names for associated with this message.

Examples

msg.properties.each do |name|
end
# File lib/qpid_proton/message.rb, line 538
def properties
  @properties
end
properties=(properties) click to toggle source

Replaces the entire set of properties with the specified hash.

# File lib/qpid_proton/message.rb, line 544
def properties=(properties)
  @properties = properties
end
reply_to() click to toggle source

Returns the reply-to address

# File lib/qpid_proton/message.rb, line 367
def reply_to
  Cproton.pn_message_get_reply_to(@impl)
end
reply_to=(address) click to toggle source

Sets the reply-to address.

Options

  • address - the reply-to address

# File lib/qpid_proton/message.rb, line 361
def reply_to=(address)
  Cproton.pn_message_set_reply_to(@impl, address)
end
reply_to_group_id() click to toggle source

Returns the reply-to group id.

# File lib/qpid_proton/message.rb, line 527
def reply_to_group_id
  Cproton.pn_message_get_reply_to_group_id(@impl)
end
reply_to_group_id=(id) click to toggle source

Sets the reply-to group id.

Options

  • id - the id

# File lib/qpid_proton/message.rb, line 521
def reply_to_group_id=(id)
  Cproton.pn_message_set_reply_to_group_id(@impl, id)
end
subject() click to toggle source

Returns the subject

# File lib/qpid_proton/message.rb, line 351
def subject
  Cproton.pn_message_get_subject(@impl)
end
subject=(subject) click to toggle source

Sets the subject.

Options

  • subject - the subject

# File lib/qpid_proton/message.rb, line 345
def subject=(subject)
  Cproton.pn_message_set_subject(@impl, subject)
end
to_s() click to toggle source
# File lib/qpid_proton/message.rb, line 133
def to_s
  tmp = Cproton.pn_string("")
  Cproton.pn_inspect(@impl, tmp)
  result = Cproton.pn_string_get(tmp)
  Cproton.pn_free(tmp)
  return result
end
ttl() click to toggle source

Returns the time-to-live, in milliseconds.

# File lib/qpid_proton/message.rb, line 244
def ttl
  Cproton.pn_message_get_ttl(@impl)
end
ttl=(time) click to toggle source

Sets the time-to-live for the message.

Options

  • time - the time in milliseconds

# File lib/qpid_proton/message.rb, line 236
def ttl=(time)
  raise TypeError.new("invalid ttl: #{time}") if time.nil? || !([Float, Fixnum].include?(time.class))
  raise RangeError.new("time out of range: #{time}") if ((time < 0))
  Cproton.pn_message_set_ttl(@impl, time.floor)
end
user_id() click to toggle source

Returns the user id.

# File lib/qpid_proton/message.rb, line 319
def user_id
  Cproton.pn_message_get_user_id(@impl)
end
user_id=(id) click to toggle source

Sets the user id.

Options

  • id - the user id

# File lib/qpid_proton/message.rb, line 313
def user_id=(id)
  Cproton.pn_message_set_user_id(@impl, id)
end