private void dealWithFullBuffer(StreamSourceFrameChannel channel) { if (!current.getBuffer().hasRemaining()) { current.getBuffer().flip(); data.add(current); current = channel.getWebSocketChannel().getBufferPool().allocate(); } }
private void checkMaxSize(StreamSourceFrameChannel channel, int res) throws IOException { if(res > 0) { currentSize += res; } if (maxMessageSize > 0 && currentSize > maxMessageSize) { WebSockets.sendClose(new CloseMessage(CloseMessage.MSG_TOO_BIG, WebSocketMessages.MESSAGES.messageToBig(maxMessageSize)), channel.getWebSocketChannel(), null); throw new IOException(WebSocketMessages.MESSAGES.messageToBig(maxMessageSize)); } }
PooledByteBuffer output = allocateBufferWithArray(channel.getWebSocketChannel(), 0); // first pass PooledByteBuffer inputBuffer = null; if (currentReadChannel != null && currentReadChannel != channel) { output = decompress(channel.getWebSocketChannel(), output); decompress.setInput(buffer.array(), buffer.arrayOffset() + buffer.position(), buffer.remaining()); } else { inputBuffer = toArrayBacked(buffer, channel.getWebSocketChannel().getBufferPool()); decompress.setInput(inputBuffer.getBuffer().array(), inputBuffer.getBuffer().arrayOffset() + inputBuffer.getBuffer().position(), inputBuffer.getBuffer().remaining()); output = decompress(channel.getWebSocketChannel(), output); } finally { output = decompress(channel.getWebSocketChannel(), output); currentReadChannel = null; } else {
@Override protected PooledByteBuffer processFrameData(PooledByteBuffer frameData, boolean lastFragmentOfFrame) throws IOException { if(masker != null) { masker.afterRead(frameData.getBuffer(), frameData.getBuffer().position(), frameData.getBuffer().remaining()); } try { return extensionFunction.transformForRead(frameData, this, lastFragmentOfFrame && isFinalFragment()); } catch (IOException e) { getWebSocketChannel().markReadsBroken(new WebSocketFrameCorruptedException(e)); throw e; } catch (Exception e) { getWebSocketChannel().markReadsBroken(new WebSocketFrameCorruptedException(e)); throw new IOException(e); } }
for (; ; ) { if (current == null) { current = channel.getWebSocketChannel().getBufferPool().allocate(); complete = true; channel.suspendReads(); callback.complete(channel.getWebSocketChannel(), BufferedBinaryMessage.this); return; } else if (res == 0) { dealWithFullBuffer(channel); } else if (!current.getBuffer().hasRemaining()) { callback.complete(channel.getWebSocketChannel(), BufferedBinaryMessage.this); callback.onError(channel.getWebSocketChannel(), BufferedBinaryMessage.this, e);
return; PooledByteBuffer pooled = channel.getWebSocketChannel().getBufferPool().allocate(); final ByteBuffer buffer = pooled.getBuffer(); try { data.write(buffer); complete = true; callback.complete(channel.getWebSocketChannel(), BufferedTextMessage.this); return; } else if (res == 0) { data.write(buffer); if (!bufferFullMessage) { callback.complete(channel.getWebSocketChannel(), BufferedTextMessage.this); buffer.clear(); if (!bufferFullMessage) { callback.complete(channel.getWebSocketChannel(), BufferedTextMessage.this); callback.onError(channel.getWebSocketChannel(), BufferedTextMessage.this, e);
private void checkMaxSize(StreamSourceFrameChannel channel, int res) throws IOException { currentSize += res; if (maxMessageSize > 0 && currentSize > maxMessageSize) { getData().free(); WebSockets.sendClose(new CloseMessage(CloseMessage.MSG_TOO_BIG, WebSocketMessages.MESSAGES.messageToBig(maxMessageSize)), channel.getWebSocketChannel(), null); throw new IOException(WebSocketMessages.MESSAGES.messageToBig(maxMessageSize)); } }
public void readBlocking(StreamSourceFrameChannel channel) throws IOException { PooledByteBuffer pooled = channel.getWebSocketChannel().getBufferPool().allocate(); final ByteBuffer buffer = pooled.getBuffer(); try { for (; ; ) { int res = channel.read(buffer); if (res == -1) { buffer.flip(); data.write(buffer); this.complete = true; return; } else if (res == 0) { channel.awaitReadable(); } checkMaxSize(channel, res); if (!buffer.hasRemaining()) { buffer.flip(); data.write(buffer); buffer.compact(); if (!bufferFullMessage) { //if we are not reading the full message we return return; } } } } finally { pooled.close(); } }
for (; ; ) { if (current == null) { current = channel.getWebSocketChannel().getBufferPool().allocate(); callback.complete(channel.getWebSocketChannel(), this); return; } else if (res == 0) { if(!bufferFullMessage) { callback.complete(channel.getWebSocketChannel(), BufferedBinaryMessage.this); dealWithFullBuffer(channel); } else if (!current.getBuffer().hasRemaining()) { callback.complete(channel.getWebSocketChannel(), BufferedBinaryMessage.this); callback.onError(channel.getWebSocketChannel(), this, e);
public void read(final StreamSourceFrameChannel channel, final WebSocketCallback<BufferedTextMessage> callback) { PooledByteBuffer pooled = channel.getWebSocketChannel().getBufferPool().allocate(); final ByteBuffer buffer = pooled.getBuffer(); try { buffer.flip(); data.write(buffer); callback.complete(channel.getWebSocketChannel(), this); return; } else if (res == 0) { data.write(buffer); if (!bufferFullMessage) { callback.complete(channel.getWebSocketChannel(), this); buffer.clear(); if (!bufferFullMessage) { callback.complete(channel.getWebSocketChannel(), this); callback.onError(channel.getWebSocketChannel(), this, e);
public void readBlocking(StreamSourceFrameChannel channel) throws IOException { if (current == null) { current = channel.getWebSocketChannel().getBufferPool().allocate(); } for (; ; ) { int res = channel.read(current.getBuffer()); if (res == -1) { complete = true; return; } else if (res == 0) { channel.awaitReadable(); } checkMaxSize(channel, res); if (bufferFullMessage) { dealWithFullBuffer(channel); } else if (!current.getBuffer().hasRemaining()) { return; } } }
private void dealWithFullBuffer(StreamSourceFrameChannel channel) { if (!current.getBuffer().hasRemaining()) { current.getBuffer().flip(); data.add(current); current = channel.getWebSocketChannel().getBufferPool().allocate(); } }
private void dealWithFullBuffer(StreamSourceFrameChannel channel) { if (!current.getBuffer().hasRemaining()) { current.getBuffer().flip(); data.add(current); current = channel.getWebSocketChannel().getBufferPool().allocate(); } }
private void checkMaxSize(StreamSourceFrameChannel channel, int res) throws IOException { if(res > 0) { currentSize += res; } if (maxMessageSize > 0 && currentSize > maxMessageSize) { WebSockets.sendClose(new CloseMessage(CloseMessage.MSG_TOO_BIG, WebSocketMessages.MESSAGES.messageToBig(maxMessageSize)), channel.getWebSocketChannel(), null); throw new IOException(WebSocketMessages.MESSAGES.messageToBig(maxMessageSize)); } }
private void checkMaxSize(StreamSourceFrameChannel channel, int res) throws IOException { if(res > 0) { currentSize += res; } if (maxMessageSize > 0 && currentSize > maxMessageSize) { WebSockets.sendClose(new CloseMessage(CloseMessage.MSG_TOO_BIG, WebSocketMessages.MESSAGES.messageToBig(maxMessageSize)), channel.getWebSocketChannel(), null); throw new IOException(WebSocketMessages.MESSAGES.messageToBig(maxMessageSize)); } }
@Override protected PooledByteBuffer processFrameData(PooledByteBuffer frameData, boolean lastFragmentOfFrame) throws IOException { if(masker != null) { masker.afterRead(frameData.getBuffer(), frameData.getBuffer().position(), frameData.getBuffer().remaining()); } try { return extensionFunction.transformForRead(frameData, this, lastFragmentOfFrame && isFinalFragment()); } catch (IOException e) { getWebSocketChannel().markReadsBroken(new WebSocketFrameCorruptedException(e)); throw e; } catch (Exception e) { getWebSocketChannel().markReadsBroken(new WebSocketFrameCorruptedException(e)); throw new IOException(e); } }
@Override protected PooledByteBuffer processFrameData(PooledByteBuffer frameData, boolean lastFragmentOfFrame) throws IOException { if(masker != null) { masker.afterRead(frameData.getBuffer(), frameData.getBuffer().position(), frameData.getBuffer().remaining()); } try { return extensionFunction.transformForRead(frameData, this, lastFragmentOfFrame && isFinalFragment()); } catch (IOException e) { getWebSocketChannel().markReadsBroken(new WebSocketFrameCorruptedException(e)); throw e; } catch (Exception e) { getWebSocketChannel().markReadsBroken(new WebSocketFrameCorruptedException(e)); throw new IOException(e); } }
private void checkMaxSize(StreamSourceFrameChannel channel, int res) throws IOException { currentSize += res; if (maxMessageSize > 0 && currentSize > maxMessageSize) { getData().free(); WebSockets.sendClose(new CloseMessage(CloseMessage.MSG_TOO_BIG, WebSocketMessages.MESSAGES.messageToBig(maxMessageSize)), channel.getWebSocketChannel(), null); throw new IOException(WebSocketMessages.MESSAGES.messageToBig(maxMessageSize)); } }
private void checkMaxSize(StreamSourceFrameChannel channel, int res) throws IOException { currentSize += res; if (maxMessageSize > 0 && currentSize > maxMessageSize) { getData().free(); WebSockets.sendClose(new CloseMessage(CloseMessage.MSG_TOO_BIG, WebSocketMessages.MESSAGES.messageToBig(maxMessageSize)), channel.getWebSocketChannel(), null); throw new IOException(WebSocketMessages.MESSAGES.messageToBig(maxMessageSize)); } }
public void readBlocking(StreamSourceFrameChannel channel) throws IOException { if (current == null) { current = channel.getWebSocketChannel().getBufferPool().allocate(); } for (; ; ) { int res = channel.read(current.getBuffer()); if (res == -1) { complete = true; return; } else if (res == 0) { channel.awaitReadable(); } checkMaxSize(channel, res); if (bufferFullMessage) { dealWithFullBuffer(channel); } else if (!current.getBuffer().hasRemaining()) { return; } } }