public void append(WebSocketFrame frame) { }
private void dispatch() { WebSocketFrame frame = new WebSocketFrame(); WebSocketFrame partialFrame = null; byte[] buffer = new byte[128 * 1024]; while (Interlocked.Read(ref state) != CLOSED) { int readBytes = read(buffer); MemoryStream s = new MemoryStream(buffer, 0, readBytes); while (frame.parse(s, readBytes)) { switch (frame.getOpCode()) { case WebSocketFrameConstants.CONTINUATION: if (partialFrame == null) { throw new WebSocketException("unexpected continuation frame"); } break; case WebSocketFrameConstants.TEXT: if (partialFrame != null) { throw new WebSocketException("expected continuation frame"); } if (frame.isFin()) { notifyMessage(frame); } else { partialFrame = frame.copy(); } break; case WebSocketFrameConstants.BINARY: if (partialFrame != null) { throw new WebSocketException("expected continuation frame"); } if (frame.isFin()) { notifyMessage(frame); } else { partialFrame = frame.copy(); } break; case WebSocketFrameConstants.CLOSE: notifyClose(frame.getCloseCode(), frame.getCloseReason()); break; case WebSocketFrameConstants.PING: write(WebSocketFrame.pong(frame.getPayload(), 0, frame.getPayloadLength())); break; case WebSocketFrameConstants.PONG: notifyPong(frame); break; } } } }