class Poseidon::MessageSet

@api private

Attributes

struct[RW]

Public Class Methods

new(messages = []) click to toggle source
# File lib/poseidon/message_set.rb, line 23
def initialize(messages = [])
  self.struct = Protocol::MessageSetStructWithSize.new(messages)
end
read(buffer) click to toggle source

Build a message set object from a binary encoded message set

@param [String] string binary encoded message set @return [MessageSet]

# File lib/poseidon/message_set.rb, line 10
def self.read(buffer)
  ms = MessageSet.new
  ms.struct = Protocol::MessageSetStructWithSize.read(buffer)
  ms
end
read_without_size(buffer) click to toggle source
# File lib/poseidon/message_set.rb, line 16
def self.read_without_size(buffer)
  ms = MessageSet.new
  ms.struct = Protocol::MessageSetStruct.read(buffer)
  ms
end

Public Instance Methods

<<(message) click to toggle source
# File lib/poseidon/message_set.rb, line 43
def <<(message)
  struct.messages << message
end
==(other) click to toggle source
# File lib/poseidon/message_set.rb, line 27
def ==(other)
  eql?(other)
end
compress(codec) click to toggle source
# File lib/poseidon/message_set.rb, line 51
def compress(codec)
  MessageSet.new([to_compressed_message(codec)])
end
eql?(other) click to toggle source
# File lib/poseidon/message_set.rb, line 31
def eql?(other)
  struct.eql?(other.struct)
end
flatten() click to toggle source

Builds an array of Message objects from the MessageStruct objects. Decompressing messages if necessary.

@return [Array<Message>]

# File lib/poseidon/message_set.rb, line 59
def flatten
  messages = struct.messages.map do |message| 
    if message.compressed?
      s = message.decompressed_value
      MessageSet.read_without_size(Protocol::ResponseBuffer.new(s)).flatten
    else
      message
    end
  end.flatten
end
messages() click to toggle source
# File lib/poseidon/message_set.rb, line 47
def messages
  struct.messages
end
objects_with_errors() click to toggle source
# File lib/poseidon/message_set.rb, line 35
def objects_with_errors
  struct.objects_with_errors
end
write(buffer) click to toggle source
# File lib/poseidon/message_set.rb, line 39
def write(buffer)
  struct.write(buffer)
end

Private Instance Methods

to_compressed_message(codec) click to toggle source
# File lib/poseidon/message_set.rb, line 71
def to_compressed_message(codec)
  buffer = Protocol::RequestBuffer.new
  struct.write(buffer)

  value = codec.compress(buffer.to_s[4..-1])
  Message.new(:value => value, :attributes => codec.codec_id)
end