/** * * @param charset the charset used to convert the bytes * @param consume whether to consume the content * @return a String with the content of this {@link DataInfo} */ public String asString(Charset charset, boolean consume) { ByteBuffer buffer = asByteBuffer(consume); return charset.decode(buffer).toString(); }
/** * @return a byte array with the content of this {@link DataInfo} * @param consume whether to consume the content */ public byte[] asBytes(boolean consume) { ByteBuffer buffer = asByteBuffer(consume); byte[] result = new byte[buffer.remaining()]; buffer.get(result); return result; }
private void data(final Stream stream, final DataInfo serverDataInfo) { final ByteBufferDataInfo clientDataInfo = new ByteBufferDataInfo(serverDataInfo.asByteBuffer(false), serverDataInfo.isClose()) { @Override public void consume(int delta) { super.consume(delta); serverDataInfo.consume(delta); } }; receiverStream.data(clientDataInfo, new Callback() //TODO: timeout??? { @Override public void succeeded() { if (LOG.isDebugEnabled()) LOG.debug("P -> C {} from {} to {}", clientDataInfo, stream, receiverStream); } @Override public void failed(Throwable x) { LOG.debug(x); rst(receiverStream); } }); } }
@Override public void onData(Stream serverStream, final DataInfo serverDataInfo) { if (LOG.isDebugEnabled()) LOG.debug("S -> P pushed {} on {}", serverDataInfo, serverStream); ByteBufferDataInfo clientDataInfo = new ByteBufferDataInfo(serverDataInfo.asByteBuffer(false), serverDataInfo.isClose()) { @Override public void consume(int delta) { super.consume(delta); serverDataInfo.consume(delta); } }; pushStreamPromise.data(clientDataInfo); }
ByteBufferDataInfo copyDataInfo = new ByteBufferDataInfo(dataInfo.asByteBuffer(false), dataInfo.isClose(), dataInfo.isCompress())
@Override public void onData(Stream clientStream, final DataInfo clientDataInfo) { logger.debug("C -> P {} on {}", clientDataInfo, clientStream); ByteBufferDataInfo serverDataInfo = new ByteBufferDataInfo(clientDataInfo.asByteBuffer(false), clientDataInfo.isClose()) { @Override public void consume(int delta) { super.consume(delta); clientDataInfo.consume(delta); } }; StreamHandler streamHandler = (StreamHandler)clientStream.getAttribute(STREAM_HANDLER_ATTRIBUTE); streamHandler.data(serverDataInfo); }
@Override public void onData(Stream serverStream, final DataInfo serverDataInfo) { logger.debug("S -> P pushed {} on {}", serverDataInfo, serverStream); ByteBufferDataInfo clientDataInfo = new ByteBufferDataInfo(serverDataInfo.asByteBuffer(false), serverDataInfo.isClose()) { @Override public void consume(int delta) { super.consume(delta); serverDataInfo.consume(delta); } }; StreamHandler handler = (StreamHandler)serverStream.getAttribute(STREAM_HANDLER_ATTRIBUTE); handler.data(clientDataInfo); } }
@Override public void onData(Stream clientStream, final DataInfo clientDataInfo) { if (LOG.isDebugEnabled()) LOG.debug("received clientDataInfo: {} for stream: {}", clientDataInfo, clientStream); DeferredContentProvider contentProvider = (DeferredContentProvider)request.getContent(); contentProvider.offer(clientDataInfo.asByteBuffer(true)); if (clientDataInfo.isClose()) contentProvider.close(); } };
@Override public void onData(Stream clientStream, final DataInfo clientDataInfo) { if (LOG.isDebugEnabled()) LOG.debug("C -> P {} on {}", clientDataInfo, clientStream); ByteBufferDataInfo serverDataInfo = new ByteBufferDataInfo(clientDataInfo.asByteBuffer(false), clientDataInfo.isClose()) { @Override public void consume(int delta) { super.consume(delta); clientDataInfo.consume(delta); } }; StreamPromise streamPromise = (StreamPromise)clientStream.getAttribute(STREAM_PROMISE_ATTRIBUTE); streamPromise.data(serverDataInfo); }
@Override public void data(DataInfo dataInfo, long timeout, TimeUnit unit, Handler<Void> handler) { try { // Data buffer must be copied, as the ByteBuffer is pooled ByteBuffer byteBuffer = dataInfo.asByteBuffer(false); Buffer buffer = byteBuffer.isDirect() ? new DirectNIOBuffer(byteBuffer, false) : new IndirectNIOBuffer(byteBuffer, false); generator.addContent(buffer, dataInfo.isClose()); generator.flush(unit.toMillis(timeout)); if (dataInfo.isClose()) complete(); handler.completed(null); } catch (IOException x) { handler.failed(null, x); } }
@Override public void data(DataInfo dataInfo, final Callback handler) { // Data buffer must be copied, as the ByteBuffer is pooled ByteBuffer byteBuffer = dataInfo.asByteBuffer(false); send(null, byteBuffer, dataInfo.isClose(), new Adapter() { @Override public void failed(Throwable x) { handler.failed(x); } }); if (dataInfo.isClose()) completed(); handler.succeeded(); } }
ByteBuffer byteBuffer = dataInfo.asByteBuffer(false); buffer = byteBuffer.isDirect() ? new DirectNIOBuffer(byteBuffer, false) : new IndirectNIOBuffer(byteBuffer, false);
ByteBuffer copyByteBuffer = dataInfo.asByteBuffer(false); ByteBufferDataInfo copyDataInfo = new ByteBufferDataInfo(copyByteBuffer, dataInfo.isClose())