class Faye::WebSocket::HybiParser

def parse(data)

def parse(data)
  @reader.put(data.bytes.to_a)
  buffer = true
  while buffer
    case @stage
      when 0 then
        buffer = @reader.read(1)
        parse_opcode(buffer[0]) if buffer
      when 1 then
        buffer = @reader.read(1)
        parse_length(buffer[0]) if buffer
      when 2 then
        buffer = @reader.read(@length_size)
        parse_extended_length(buffer) if buffer
      when 3 then
        buffer = @reader.read(4)
        if buffer
          @mask  = buffer
          @stage = 4
        end
      when 4 then
        buffer = @reader.read(@length)
        if buffer
          @payload = buffer
          emit_frame
          @stage = 0
        end
    end
  end
  nil
end