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