Class HttpContent
- All Implemented Interfaces:
Closeable
,AutoCloseable
,Callback
,Invocable
HttpContent
is a stateful, linear representation of the request content provided
by a ContentProvider
that can be traversed one-way to obtain content buffers to
send to an HTTP server.
HttpContent
offers the notion of a one-way cursor to traverse the content.
The cursor starts in a virtual "before" position and can be advanced using advance()
until it reaches a virtual "after" position where the content is fully consumed.
+---+ +---+ +---+ +---+ +---+ | | | | | | | | | | +---+ +---+ +---+ +---+ +---+ ^ ^ ^ ^ | | --> advance() | | | | last | | | | before | after | currentAt each valid (non-before and non-after) cursor position,
HttpContent
provides the following state:
- the buffer containing the content to send, via
getByteBuffer()
- a copy of the content buffer that can be used for notifications, via
getContent()
- whether the buffer to write is the last one, via
isLast()
HttpContent
may not have content, if the related ContentProvider
is null
, and this
is reflected by hasContent()
.
HttpContent
may have deferred content
, in which case advance()
moves the cursor to a position that provides null
buffer
and
content
. When the deferred content is available, a further call to advance()
will move the cursor to a position that provides non null
buffer and content.
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.Callback
Callback.Completable, Callback.Completing, Callback.InvocableCallback, Callback.Nested
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.thread.Invocable
Invocable.InvocationType
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final ByteBuffer
private ByteBuffer
private static final ByteBuffer
private ByteBuffer
private final Iterator
<ByteBuffer> private boolean
private static final Logger
private final ContentProvider
Fields inherited from interface org.eclipse.jetty.util.thread.Invocable
__nonBlocking
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionboolean
advance()
Advances the cursor to the next block of content.private boolean
advance
(Iterator<ByteBuffer> iterator) void
close()
void
Callback invoked when the operation fails.boolean
boolean
boolean
isLast()
private static boolean
isTheCloseBuffer
(ByteBuffer buffer) void
Callback invoked when the operation completes.toString()
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.eclipse.jetty.util.thread.Invocable
getInvocationType
-
Field Details
-
LOG
-
AFTER
-
CLOSE
-
provider
-
iterator
-
buffer
-
-
last
private boolean last
-
-
Constructor Details
-
HttpContent
-
-
Method Details
-
isTheCloseBuffer
- Returns:
- true if the buffer is the sentinel instance
CLOSE
-
hasContent
public boolean hasContent()- Returns:
- whether there is any content at all
-
isLast
public boolean isLast()- Returns:
- whether the cursor points to the last content
-
getByteBuffer
- Returns:
- the
ByteBuffer
containing the content at the cursor's position
-
getContent
- Returns:
- a
ByteBuffer.slice()
ofgetByteBuffer()
at the cursor's position
-
advance
public boolean advance()Advances the cursor to the next block of content.The next block of content may be valid (which yields a non-null buffer returned by
getByteBuffer()
), but may also be deferred (which yields a null buffer returned bygetByteBuffer()
).If the block of content pointed by the new cursor position is valid, this method returns true.
- Returns:
- true if there is content at the new cursor's position, false otherwise.
-
advance
-
isConsumed
public boolean isConsumed()- Returns:
- whether the cursor has been advanced past the
last
position.
-
succeeded
public void succeeded()Description copied from interface:Callback
Callback invoked when the operation completes.
-
failed
Description copied from interface:Callback
Callback invoked when the operation fails.
-
close
public void close()- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
-
toString
-