Class AvailableNettyByteBody
- All Implemented Interfaces:
AvailableByteBody
,ByteBody
,CloseableAvailableByteBody
,CloseableByteBody
,InternalByteBody
,Closeable
,AutoCloseable
- Since:
- 4.5.0
- Author:
- Jonas Konrad
-
Nested Class Summary
Nested classes/interfaces inherited from interface io.micronaut.http.body.ByteBody
ByteBody.BodyDiscardedException, ByteBody.SplitBackpressureMode
-
Field Summary
Fields inherited from class io.micronaut.http.netty.body.NettyByteBody
LOG
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription@NonNull ExecutionFlow<? extends CloseableAvailableByteBody>
Variant ofInternalByteBody.buffer()
that uses theExecutionFlow
API for extra efficiency.void
close()
Clean up any resources held by this instance.static @NonNull CloseableByteBody
createChecked
(@NonNull io.netty.channel.EventLoop loop, @NonNull BodySizeLimits bodySizeLimits, @NonNull io.netty.buffer.ByteBuf buf) This is a wrapper aroundAvailableNettyByteBody(ByteBuf)
with an extra body length check.static CloseableAvailableByteBody
empty()
long
length()
The length in bytes of the body.move()
Create a newCloseableByteBody
with the same content but an independent lifecycle, claiming this body in the process.io.netty.buffer.ByteBuf
peek()
split()
For immediate buffers, backpressure is not relevant, so the backpressure modes passed toAvailableByteBody.split(SplitBackpressureMode)
are ignored.byte @NonNull []
Get this body as a byte array.static @NonNull io.netty.buffer.ByteBuf
Get this body as aByteBuffer
.protected reactor.core.publisher.Flux<io.netty.buffer.ByteBuf>
Get this body as anInputStream
.Convert this body to a string with the given charset.Methods inherited from class io.micronaut.http.netty.body.NettyByteBody
toByteArrayPublisher, toByteBufferPublisher, toByteBufs
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface io.micronaut.http.body.AvailableByteBody
expectedLength, split, toByteArrayPublisher, toByteBufferPublisher
Methods inherited from interface io.micronaut.http.body.CloseableAvailableByteBody
allowDiscard
Methods inherited from interface io.micronaut.http.body.InternalByteBody
buffer
-
Constructor Details
-
AvailableNettyByteBody
-
-
Method Details
-
empty
-
toByteBuf
@NonNull public static @NonNull io.netty.buffer.ByteBuf toByteBuf(@NonNull @NonNull AvailableByteBody body) -
createChecked
@NonNull public static @NonNull CloseableByteBody createChecked(@NonNull @NonNull io.netty.channel.EventLoop loop, @NonNull @NonNull BodySizeLimits bodySizeLimits, @NonNull @NonNull io.netty.buffer.ByteBuf buf) This is a wrapper aroundAvailableNettyByteBody(ByteBuf)
with an extra body length check.- Parameters:
loop
- The event loop for constructingStreamingNettyByteBody
bodySizeLimits
- The body size limits to checkbuf
- The input buffer- Returns:
- The body with the given input buffer, or a
StreamingNettyByteBody
with the appropriate content length error
-
peek
public io.netty.buffer.ByteBuf peek() -
toInputStream
Description copied from interface:ByteBody
Get this body as anInputStream
.This is a primary operation. After this operation, no other primary operation or
ByteBody.split()
may be done.- Specified by:
toInputStream
in interfaceByteBody
- Returns:
- The streamed bytes
-
length
public long length()Description copied from interface:AvailableByteBody
The length in bytes of the body.- Specified by:
length
in interfaceAvailableByteBody
- Returns:
- The length
- See Also:
-
bufferFlow
Description copied from interface:InternalByteBody
Variant ofInternalByteBody.buffer()
that uses theExecutionFlow
API for extra efficiency.- Specified by:
bufferFlow
in interfaceInternalByteBody
- Specified by:
bufferFlow
in classNettyByteBody
- Returns:
- A flow that completes when all bytes are available
-
close
public void close()Description copied from interface:CloseableByteBody
Clean up any resources held by this instance. See class documentation.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Specified by:
close
in interfaceCloseableByteBody
-
toByteBufPublisher
protected reactor.core.publisher.Flux<io.netty.buffer.ByteBuf> toByteBufPublisher() -
toByteArray
Description copied from interface:AvailableByteBody
Get this body as a byte array.This is a primary operation. After this operation, no other primary operation or
AvailableByteBody.split()
may be done.- Specified by:
toByteArray
in interfaceAvailableByteBody
- Returns:
- The bytes
-
toByteBuffer
Description copied from interface:AvailableByteBody
Get this body as aByteBuffer
. Note that the buffer may bereference counted
, and the caller must take care of releasing it.This is a primary operation. After this operation, no other primary operation or
AvailableByteBody.split()
may be done.- Specified by:
toByteBuffer
in interfaceAvailableByteBody
- Returns:
- The bytes
-
move
Description copied from interface:ByteBody
Create a newCloseableByteBody
with the same content but an independent lifecycle, claiming this body in the process.This is a primary operation. After this operation, no other primary operation or
ByteBody.split()
may be done.The purpose of this method is to move the data to a different component in an application, making clear that the receiving component claims ownership of the body. If the sending component then closes the original
ByteBody
for example, it will have no impact on the newCloseableByteBody
that the receiver is working with.- Specified by:
move
in interfaceByteBody
- Returns:
- A new
CloseableByteBody
with the same content.
-
toString
Description copied from interface:AvailableByteBody
Convert this body to a string with the given charset.This is a primary operation. After this operation, no other primary operation or
AvailableByteBody.split()
may be done.- Specified by:
toString
in interfaceAvailableByteBody
- Parameters:
charset
- The charset to convert the body- Returns:
- The body as a string
-
split
Description copied from interface:AvailableByteBody
For immediate buffers, backpressure is not relevant, so the backpressure modes passed toAvailableByteBody.split(SplitBackpressureMode)
are ignored. You can use this method always.- Specified by:
split
in interfaceAvailableByteBody
- Specified by:
split
in interfaceByteBody
- Returns:
- A body with the same content as this one
- See Also:
-