class Faye::WebSocket::Draft75Parser

def parse(buffer)

def parse(buffer)
  buffer.each_byte do |data|
    case @stage
      when 0 then
        parse_leading_byte(data)
        
      when 1 then
        value = (data & 0x7F)
        @length = value + 128 * @length
        
        if @closing and @length.zero?
          @socket.close(nil, nil, false)
        elsif (0x80 & data) != 0x80
          if @length.zero?
            @socket.receive('')
            @stage = 0
          else
            @buffer = []
            @stage = 2
          end
        end
        
      when 2 then
        if data == 0xFF
          @socket.receive(WebSocket.encode(@buffer))
          @stage = 0
        else
          @buffer << data
          if @length and @buffer.size == @length
            @stage = 0
          end
        end
    end
  end
  
  nil
end