123456789_123456789_123456789_123456789_123456789_

Class: EventMachine::Protocols::Stomp::Message

Relationships & Source Files
Inherits: Object
Defined in: lib/em/protocols/stomp.rb

Class Method Summary

Instance Attribute Summary

  • #body rw

    Body of the message.

  • #command rw

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

  • #header (also: #headers) rw

    Hash containing headers such as destination and message-id.

  • #headers readonly

    Alias for #header.

Instance Method Summary

Constructor Details

.newMessage

This method is for internal use only.
[ GitHub ]

  
# File 'lib/em/protocols/stomp.rb', line 68

def initialize
  @header = {}
  @state = :precommand
  @content_length = nil
end

Instance Attribute Details

#body (rw)

Body of the message

[ GitHub ]

  
# File 'lib/em/protocols/stomp.rb', line 65

attr_accessor :body

#command (rw)

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

[ GitHub ]

  
# File 'lib/em/protocols/stomp.rb', line 60

attr_accessor :command

#header (rw) Also known as: #headers

Hash containing headers such as destination and message-id

[ GitHub ]

  
# File 'lib/em/protocols/stomp.rb', line 62

attr_accessor :header

#headers (readonly)

Alias for #header.

[ GitHub ]

  
# File 'lib/em/protocols/stomp.rb', line 63

alias :headers :header

Instance Method Details

#consume_line(line)

This method is for internal use only.
[ GitHub ]

  
# 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