@Override protected void discardData(DataBuffer dataBuffer) { DataBufferUtils.release(dataBuffer); } }
/** * Release the payload {@code DataBuffer} which is useful on runtimes * (e.g. Netty) with pooled buffers such as Netty. A shortcut for: * <pre> * DataBuffer payload = message.getPayload(); * DataBufferUtils.release(payload); * </pre> * @see DataBufferUtils#release(DataBuffer) */ public void release() { DataBufferUtils.release(this.payload); }
@Override protected void discardData(DataBuffer dataBuffer) { DataBufferUtils.release(dataBuffer); } }
@Override public void failed(Throwable x) { DataBufferUtils.release(buffer); throw Exceptions.propagate(x); } });
@Override public void failed(Throwable exc, DataBuffer dataBuffer) { release(dataBuffer); this.sink.error(exc); }
@Override protected ByteBuffer decodeDataBuffer(DataBuffer dataBuffer, ResolvableType elementType, @Nullable MimeType mimeType, @Nullable Map<String, Object> hints) { int byteCount = dataBuffer.readableByteCount(); ByteBuffer copy = ByteBuffer.allocate(byteCount); copy.put(dataBuffer.asByteBuffer()); copy.flip(); DataBufferUtils.release(dataBuffer); if (logger.isDebugEnabled()) { logger.debug(Hints.getLogPrefix(hints) + "Read " + byteCount + " bytes"); } return copy; }
@Override protected byte[] decodeDataBuffer(DataBuffer dataBuffer, ResolvableType elementType, @Nullable MimeType mimeType, @Nullable Map<String, Object> hints) { byte[] result = new byte[dataBuffer.readableByteCount()]; dataBuffer.read(result); DataBufferUtils.release(dataBuffer); if (logger.isDebugEnabled()) { logger.debug(Hints.getLogPrefix(hints) + "Read " + result.length + " bytes"); } return result; }
@Override public boolean release() { boolean result; try { result = DataBufferUtils.release(this.dataBuffer); } finally { this.pooledByteBuffer.close(); } return result && this.pooledByteBuffer.isOpen(); }
private static Mono<Void> consumeAndCancel(ReactiveHttpInputMessage message) { return message.getBody() .map(buffer -> { DataBufferUtils.release(buffer); throw new ReadCancellationException(); }) .onErrorResume(ReadCancellationException.class, ex -> Mono.empty()) .then(); }
private String string(DataBuffer buffer) { String value = DataBufferTestUtils.dumpString(buffer, StandardCharsets.UTF_8); DataBufferUtils.release(buffer); return value; }
@Override public Mono<String> getResourceVersion(Resource resource) { Flux<DataBuffer> flux = DataBufferUtils.read(resource, dataBufferFactory, StreamUtils.BUFFER_SIZE); return DataBufferUtils.join(flux) .map(buffer -> { byte[] result = new byte[buffer.readableByteCount()]; buffer.read(result); DataBufferUtils.release(buffer); return DigestUtils.md5DigestAsHex(result); }); }
@Override public void complete(WebSocketChannel channel, Void context) { DataBufferUtils.release(this.payload); getSendProcessor().setReadyToSend(true); getSendProcessor().onWritePossible(); }
@Override public void onError(WebSocketChannel channel, Void context, Throwable throwable) { DataBufferUtils.release(this.payload); getSendProcessor().cancel(); getSendProcessor().onError(throwable); } }
private Consumer<DataBuffer> stringConsumer(String expected) { return dataBuffer -> { String value = DataBufferTestUtils.dumpString(dataBuffer, StandardCharsets.UTF_8); DataBufferUtils.release(dataBuffer); assertEquals(expected, value); }; }
protected Consumer<DataBuffer> stringConsumer(String expected) { return dataBuffer -> { String value = DataBufferTestUtils.dumpString(dataBuffer, UTF_8); DataBufferUtils.release(dataBuffer); assertEquals(expected, value); }; }
protected Consumer<DataBuffer> stringConsumer(String expected) { return dataBuffer -> { String value = DataBufferTestUtils.dumpString(dataBuffer, StandardCharsets.UTF_8); DataBufferUtils.release(dataBuffer); assertEquals(expected, value); }; }
private Consumer<DataBuffer> expectDataBuffer(byte[] expected) { return actual -> { byte[] actualBytes = new byte[actual.readableByteCount()]; actual.read(actualBytes); assertArrayEquals(expected, actualBytes); DataBufferUtils.release(actual); }; } }
@Test public void noLeak() { DataBuffer dataBuffer = this.bufferFactory.allocateBuffer(); release(dataBuffer); this.bufferFactory.checkForLeaks(); }
protected Consumer<DataBuffer> expectXml(String expected) { return dataBuffer -> { byte[] resultBytes = new byte[dataBuffer.readableByteCount()]; dataBuffer.read(resultBytes); release(dataBuffer); String actual = new String(resultBytes, UTF_8); assertThat(actual, isSimilarTo(expected)); }; }
/** * Create a result consumer that expects the given bytes. * @param expected the expected bytes * @return a consumer that expects the given data buffer to be equal to {@code expected} */ protected final Consumer<DataBuffer> expectBytes(byte[] expected) { return dataBuffer -> { byte[] resultBytes = new byte[dataBuffer.readableByteCount()]; dataBuffer.read(resultBytes); release(dataBuffer); assertArrayEquals(expected, resultBytes); }; }