java.io.Closeable, java.lang.AutoCloseable, java.lang.Iterable<java.nio.ByteBuffer>, ContentProvider, AsyncContentProvider, org.eclipse.jetty.util.Callback, org.eclipse.jetty.util.thread.Invocablepublic class OutputStreamContentProvider extends java.lang.Object implements AsyncContentProvider, org.eclipse.jetty.util.Callback, java.io.Closeable
ContentProvider that provides content asynchronously through an OutputStream
similar to DeferredContentProvider.
OutputStreamContentProvider can only be used in conjunction with
Request.send(Response.CompleteListener) (and not with its blocking counterpart Request.send())
because it provides content asynchronously.
The deferred content is provided once by writing to the output stream
and then fully consumed.
Invocations to the iterator() method after the first will return an "empty" iterator
because the stream has been consumed on the first invocation.
However, it is possible for subclasses to support multiple invocations of iterator()
by overriding write(ByteBuffer) and close(), copying the bytes and making them
available for subsequent invocations.
Content must be provided by writing to the output stream, that must be
closed when all content has been provided.
Example usage:
HttpClient httpClient = ...;
// Use try-with-resources to autoclose the output stream
OutputStreamContentProvider content = new OutputStreamContentProvider();
try (OutputStream output = content.getOutputStream())
{
httpClient.newRequest("localhost", 8080)
.content(content)
.send(new Response.CompleteListener()
{
@Override
public void onComplete(Result result)
{
// Your logic here
}
});
// At a later time...
output.write("some content".getBytes());
}
AsyncContentProvider.Listenerorg.eclipse.jetty.util.Callback.Completable, org.eclipse.jetty.util.Callback.NestedContentProvider.Typed| Constructor | Description |
|---|---|
OutputStreamContentProvider() |
| Modifier and Type | Method | Description |
|---|---|---|
void |
close() |
|
void |
failed(java.lang.Throwable failure) |
|
org.eclipse.jetty.util.thread.Invocable.InvocationType |
getInvocationType() |
|
long |
getLength() |
|
java.io.OutputStream |
getOutputStream() |
|
java.util.Iterator<java.nio.ByteBuffer> |
iterator() |
|
void |
setListener(AsyncContentProvider.Listener listener) |
|
void |
succeeded() |
|
protected void |
write(java.nio.ByteBuffer buffer) |
isReproduciblepublic org.eclipse.jetty.util.thread.Invocable.InvocationType getInvocationType()
getInvocationType in interface org.eclipse.jetty.util.thread.Invocablepublic long getLength()
getLength in interface ContentProviderpublic java.util.Iterator<java.nio.ByteBuffer> iterator()
iterator in interface java.lang.Iterable<java.nio.ByteBuffer>public void setListener(AsyncContentProvider.Listener listener)
setListener in interface AsyncContentProviderlistener - the listener to be notified of content availabilitypublic java.io.OutputStream getOutputStream()
protected void write(java.nio.ByteBuffer buffer)
public void close()
close in interface java.lang.AutoCloseableclose in interface java.io.Closeablepublic void succeeded()
succeeded in interface org.eclipse.jetty.util.Callbackpublic void failed(java.lang.Throwable failure)
failed in interface org.eclipse.jetty.util.CallbackCopyright © 1995–2018 Webtide. All rights reserved.