class WebSocket::Driver::Draft75

def parse(chunk)

def parse(chunk)
  return if @ready_state > 1
  @reader.put(chunk)
  @reader.each_byte do |octet|
    case @stage
      when -1 then
        @body << octet
        send_handshake_body
      when 0 then
        parse_leading_byte(octet)
      when 1 then
        @length = (octet & 0x7F) + 128 * @length
        if @closing and @length.zero?
          return close
        elsif (octet & 0x80) != 0x80
          if @length.zero?
            @stage = 0
          else
            @skipped = 0
            @stage   = 2
          end
        end
      when 2 then
        if octet == 0xFF
          @stage = 0
          emit(:message, MessageEvent.new(Driver.encode(@buffer, Encoding::UTF_8)))
        else
          if @length
            @skipped += 1
            @stage = 0 if @skipped == @length
          else
            @buffer << octet
            return close if @buffer.size > @max_length
          end
        end
    end
  end
end