class EventMachine::Protocols::Stomp::Message

Attributes

body[RW]

Body of the message

command[RW]

The command associated with the message, usually 'CONNECTED' or 'MESSAGE'

header[RW]

Hash containing headers such as destination and message-id

headers[RW]

Hash containing headers such as destination and message-id

Public Class Methods

new() click to toggle source

@private

# File lib/em/protocols/stomp.rb, line 68
def initialize
  @header = {}
  @state = :precommand
  @content_length = nil
end

Public Instance Methods

consume_line(line) { |:sized_text, content_length+1| ... } click to toggle source

@private

# File lib/em/protocols/stomp.rb, line 74
def consume_line line
  if @state == :precommand
    unless line =~ /\A\s*\Z/
      @command = line
      @state = :headers
    end
  elsif @state == :headers
    if line == ""
      if @content_length
        yield( [:sized_text, @content_length+1] )
      else
        @state = :body
        yield( [:unsized_text] )
      end
    elsif line =~ /\A([^:]+):(.+)\Z/
      k = $1.dup.strip
      v = $2.dup.strip
      @header[k] = v
      if k == "content-length"
        @content_length = v.to_i
      end
    else
      # This is a protocol error. How to signal it?
    end
  elsif @state == :body
    @body = line
    yield( [:dispatch] )
  end
end