/** * Disable auto memory release on each signal published in order to prevent premature * recycling when buffers are accumulated downstream (async). * * @return {@link ByteBufMono} of retained {@link ByteBuf} */ public ByteBufMono retain() { return new ByteBufMono(doOnNext(ByteBuf::retain)); }
/** * a {@link String} inbound {@link Mono} * * @return a {@link String} inbound {@link Mono} */ public final Mono<String> asString() { return asString(Charset.defaultCharset()); }
/** * a {@literal byte[]} inbound {@link Mono} * * @return a {@literal byte[]} inbound {@link Mono} */ public final Mono<byte[]> asByteArray() { return handle((bb, sink) -> { try { byte[] bytes = new byte[bb.readableBytes()]; bb.readBytes(bytes); sink.next(bytes); } catch (IllegalReferenceCountException e) { sink.complete(); } }); }
private static Function<Integer, Mono<InputStream>> zipkinServerStream(String zipkinUrl, Mono<HttpClient> client) { return lookbackSeconds -> client .flatMap(c -> c .get(zipkinQuery(zipkinUrl, lookbackSeconds)) .flatMap(resp -> resp.receive() .aggregate() .asInputStream())); }
/** * a {@link ByteBuffer} inbound {@link Mono} * * @return a {@link ByteBuffer} inbound {@link Mono} */ public final Mono<ByteBuffer> asByteBuffer() { return handle((bb, sink) -> { try { sink.next(bb.nioBuffer()); } catch (IllegalReferenceCountException e) { sink.complete(); } }); }
/** * a {@link String} inbound {@link Mono} * * @param charset the decoding charset * * @return a {@link String} inbound {@link Mono} */ public final Mono<String> asString(Charset charset) { return handle((bb, sink) -> { try { sink.next(bb.toString(charset)); } catch (IllegalReferenceCountException e) { sink.complete(); } }); }
/** * Convert to an {@link InputStream} inbound {@link Mono} * * @return a {@link InputStream} inbound {@link Mono} */ public Mono<InputStream> asInputStream() { return handle((bb, sink) -> { try { sink.next(new ReleasingInputStream(bb)); } catch (IllegalReferenceCountException e) { sink.complete(); } }); }