in src/main/java/com/microsoft/azure/proton/transport/ws/impl/WebSocketImpl.java [587:629]
public void pop(int bytes) {
if (isWebSocketEnabled) {
switch (webSocketState) {
case PN_WS_CONNECTING:
if (outputBuffer.position() != 0) {
outputBuffer.flip();
outputBuffer.position(bytes);
outputBuffer.compact();
head.position(0);
head.limit(outputBuffer.position());
} else {
underlyingOutput.pop(bytes);
}
break;
case PN_WS_CONNECTED_FLOW:
case PN_WS_CONNECTED_PONG:
case PN_WS_CONNECTED_CLOSING:
if ((bytes >= webSocketHeaderSize) && (outputBuffer.position() != 0)) {
outputBuffer.flip();
outputBuffer.position(bytes);
outputBuffer.compact();
head.position(0);
head.limit(outputBuffer.position());
underlyingOutput.pop(bytes - webSocketHeaderSize);
webSocketHeaderSize = 0;
} else if ((bytes > 0) && (bytes < webSocketHeaderSize)) {
webSocketHeaderSize -= bytes;
} else {
underlyingOutput.pop(bytes);
}
break;
case PN_WS_NOT_STARTED:
case PN_WS_CLOSED:
case PN_WS_FAILED:
underlyingOutput.pop(bytes);
break;
default:
assert false : String.format("unexpected value for WebSocketFrameReadState: %s", webSocketState);
}
} else {
underlyingOutput.pop(bytes);
}
}