public boolean isComplete() { if (frames.isEmpty()) return false; Frame frame = frames.get(frames.size() - 1); return frame.isFinalFrame() && frame.isComplete(); }
private Frame readFrame() throws IOException { while (!Frame.hasHeaders(buffer, 0, limit)) { int read = in.read(buffer, limit, buffer.length - limit); if (read == -1) throw new IOException("Connection closed"); limit += read; } Frame frame = new Frame(); int r = frame.read(buffer, 0, limit); limit -= r; if (limit != 0) System.arraycopy(buffer, r, buffer, 0, limit); if (frame.isComplete()) return frame; else { while (!frame.isComplete()) { frame.read(in); } return frame; } }
System.arraycopy(buffer, k, buffer, 0, read); if (frame.isComplete()) { if (frame.isMasked()) frame.unmask();