Extracts a message from given buffer
# File lib/listen/tcp/message.rb, line 36 def self.from_buffer(buffer) if buffer.bytesize > HEADER_SIZE size = buffer.unpack(HEADER_FORMAT).first payload_size = HEADER_SIZE + size if buffer.bytesize >= payload_size payload = buffer.slice!(0...payload_size) new.tap do |message| message.payload = payload end end end end
Initializes a new message
@param [Object] object to initialize message with
# File lib/listen/tcp/message.rb, line 16 def initialize(*args) self.object = args end
Generates message size and payload for given object
# File lib/listen/tcp/message.rb, line 21 def object=(obj) @object = obj @body = JSON.generate(@object) @size = @body.bytesize @payload = [@size, @body].pack(PAYLOAD_FORMAT) end
Extracts message size and loads object from given payload
# File lib/listen/tcp/message.rb, line 29 def payload=(payload) @payload = payload @size, @body = @payload.unpack(PAYLOAD_FORMAT) @object = JSON.parse(@body) end