Container, Destroyable, Dumpable, LifeCycle@ManagedObject public class HTTP2Client extends ContainerLifeCycle
HTTP2Client provides an asynchronous, non-blocking implementation
to send HTTP/2 frames to a server.
Typical usage:
// Create and start HTTP2Client.
HTTP2Client client = new HTTP2Client();
SslContextFactory sslContextFactory = new SslContextFactory();
client.addBean(sslContextFactory);
client.start();
// Connect to host.
String host = "webtide.com";
int port = 443;
FuturePromise<Session> sessionPromise = new FuturePromise<>();
client.connect(sslContextFactory, new InetSocketAddress(host, port), new ServerSessionListener.Adapter(), sessionPromise);
// Obtain the client Session object.
Session session = sessionPromise.get(5, TimeUnit.SECONDS);
// Prepare the HTTP request headers.
HttpFields requestFields = new HttpFields();
requestFields.put("User-Agent", client.getClass().getName() + "/" + Jetty.VERSION);
// Prepare the HTTP request object.
MetaData.Request request = new MetaData.Request("PUT", new HttpURI("https://" + host + ":" + port + "/"), HttpVersion.HTTP_2, requestFields);
// Create the HTTP/2 HEADERS frame representing the HTTP request.
HeadersFrame headersFrame = new HeadersFrame(request, null, false);
// Prepare the listener to receive the HTTP response frames.
Stream.Listener responseListener = new new Stream.Listener.Adapter()
{
@Override
public void onHeaders(Stream stream, HeadersFrame frame)
{
System.err.println(frame);
}
@Override
public void onData(Stream stream, DataFrame frame, Callback callback)
{
System.err.println(frame);
callback.succeeded();
}
};
// Send the HEADERS frame to create a stream.
FuturePromise<Stream> streamPromise = new FuturePromise<>();
session.newStream(headersFrame, streamPromise, responseListener);
Stream stream = streamPromise.get(5, TimeUnit.SECONDS);
// Use the Stream object to send request content, if any, using a DATA frame.
ByteBuffer content = ...;
DataFrame requestContent = new DataFrame(stream.getId(), content, true);
stream.data(requestContent, Callback.Adapter.INSTANCE);
// When done, stop the client.
client.stop();
AbstractLifeCycle.AbstractLifeCycleListenerContainer.InheritedListener, Container.ListenerLifeCycle.ListenerFAILED, RUNNING, STARTED, STARTING, STOP_ON_FAILURE, STOPPED, STOPPING| Constructor | Description |
|---|---|
HTTP2Client() |
| Modifier and Type | Method | Description |
|---|---|---|
void |
accept(SslContextFactory sslContextFactory,
java.nio.channels.SocketChannel channel,
Session.Listener listener,
Promise<Session> promise) |
|
protected void |
configure(java.nio.channels.SocketChannel channel) |
|
void |
connect(java.net.InetSocketAddress address,
Session.Listener listener,
Promise<Session> promise) |
|
void |
connect(SslContextFactory sslContextFactory,
java.net.InetSocketAddress address,
Session.Listener listener,
Promise<Session> promise) |
|
void |
connect(SslContextFactory sslContextFactory,
java.net.InetSocketAddress address,
Session.Listener listener,
Promise<Session> promise,
java.util.Map<java.lang.String,java.lang.Object> context) |
|
protected void |
doStart() |
|
ByteBufferPool |
getByteBufferPool() |
|
ClientConnectionFactory |
getClientConnectionFactory() |
|
long |
getConnectTimeout() |
|
java.util.concurrent.Executor |
getExecutor() |
|
FlowControlStrategy.Factory |
getFlowControlStrategyFactory() |
|
long |
getIdleTimeout() |
|
int |
getInitialSessionRecvWindow() |
|
int |
getInitialStreamRecvWindow() |
|
int |
getInputBufferSize() |
|
java.util.List<java.lang.String> |
getProtocols() |
|
Scheduler |
getScheduler() |
|
int |
getSelectors() |
|
protected SelectorManager |
newSelectorManager() |
|
protected ClientConnectionFactory |
newSslClientConnectionFactory(SslContextFactory sslContextFactory,
ClientConnectionFactory connectionFactory) |
|
void |
setByteBufferPool(ByteBufferPool bufferPool) |
|
void |
setClientConnectionFactory(ClientConnectionFactory connectionFactory) |
|
void |
setConnectTimeout(long connectTimeout) |
|
void |
setExecutor(java.util.concurrent.Executor executor) |
|
void |
setFlowControlStrategyFactory(FlowControlStrategy.Factory flowControlStrategyFactory) |
|
void |
setIdleTimeout(long idleTimeout) |
|
void |
setInitialSessionRecvWindow(int initialSessionRecvWindow) |
|
void |
setInitialStreamRecvWindow(int initialStreamRecvWindow) |
|
void |
setInputBufferSize(int inputBufferSize) |
|
void |
setProtocols(java.util.List<java.lang.String> protocols) |
|
void |
setScheduler(Scheduler scheduler) |
|
void |
setSelectors(int selectors) |
addLifeCycleListener, getState, getState, getStopTimeout, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeLifeCycleListener, start, stopaddBean, addBean, addBean, addEventListener, addManaged, contains, destroy, doStop, dump, dump, dump, dump, dump, dumpBeans, dumpObject, dumpStdErr, dumpThis, getBean, getBeans, getBeans, getContainedBeans, getContainedBeans, isManaged, manage, removeBean, removeBeans, removeEventListener, setBeans, setStopTimeout, start, stop, unmanage, updateBean, updateBean, updateBeansprotected void doStart()
throws java.lang.Exception
doStart in class ContainerLifeCyclejava.lang.Exceptionprotected SelectorManager newSelectorManager()
protected ClientConnectionFactory newSslClientConnectionFactory(SslContextFactory sslContextFactory, ClientConnectionFactory connectionFactory)
public java.util.concurrent.Executor getExecutor()
public void setExecutor(java.util.concurrent.Executor executor)
public Scheduler getScheduler()
public void setScheduler(Scheduler scheduler)
public ByteBufferPool getByteBufferPool()
public void setByteBufferPool(ByteBufferPool bufferPool)
public ClientConnectionFactory getClientConnectionFactory()
public void setClientConnectionFactory(ClientConnectionFactory connectionFactory)
public FlowControlStrategy.Factory getFlowControlStrategyFactory()
public void setFlowControlStrategyFactory(FlowControlStrategy.Factory flowControlStrategyFactory)
@ManagedAttribute("The number of selectors") public int getSelectors()
public void setSelectors(int selectors)
@ManagedAttribute("The idle timeout in milliseconds") public long getIdleTimeout()
public void setIdleTimeout(long idleTimeout)
@ManagedAttribute("The connect timeout in milliseconds") public long getConnectTimeout()
public void setConnectTimeout(long connectTimeout)
@ManagedAttribute("The size of the buffer used to read from the network") public int getInputBufferSize()
public void setInputBufferSize(int inputBufferSize)
@ManagedAttribute("The ALPN protocol list") public java.util.List<java.lang.String> getProtocols()
public void setProtocols(java.util.List<java.lang.String> protocols)
@ManagedAttribute("The initial size of session\'s flow control receive window") public int getInitialSessionRecvWindow()
public void setInitialSessionRecvWindow(int initialSessionRecvWindow)
@ManagedAttribute("The initial size of stream\'s flow control receive window") public int getInitialStreamRecvWindow()
public void setInitialStreamRecvWindow(int initialStreamRecvWindow)
public void connect(java.net.InetSocketAddress address,
Session.Listener listener,
Promise<Session> promise)
public void connect(SslContextFactory sslContextFactory, java.net.InetSocketAddress address, Session.Listener listener, Promise<Session> promise)
public void connect(SslContextFactory sslContextFactory, java.net.InetSocketAddress address, Session.Listener listener, Promise<Session> promise, java.util.Map<java.lang.String,java.lang.Object> context)
public void accept(SslContextFactory sslContextFactory, java.nio.channels.SocketChannel channel, Session.Listener listener, Promise<Session> promise)
protected void configure(java.nio.channels.SocketChannel channel)
throws java.io.IOException
java.io.IOExceptionCopyright © 1995–2017 Webtide. All rights reserved.