java.lang.Object
io.helidon.webserver.http2.Http2Connection
- All Implemented Interfaces:
InterruptableTask<Void>
,ServerConnection
,Runnable
,Callable<Void>
HTTP/2 server connection.
A single connection is created between a client and a server.
A single connection serves multiple streams.
-
Method Summary
Modifier and TypeMethodDescriptionboolean
Signals if a task can be interrupted at the time this method is called.void
clientSettings
(Http2Settings http2Settings) Client settings, obtained from SETTINGS frame or HTTP/2 upgrade request.void
close
(boolean interrupt) Close a connection.void
Expect connection preface (prior knowledge).void
Start handling the connection.void
Start handling the connection.idleTime()
How long is this connection idle.toString()
void
upgradeConnectionData
(HttpPrologue prologue, Http2Headers headers) Connection headers from an upgrade request from HTTP/1.1.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface io.helidon.common.task.InterruptableTask
call, run
-
Method Details
-
handle
Description copied from interface:ServerConnection
Start handling the connection. Data is provided throughServerConnectionSelector.connection(io.helidon.webserver.ConnectionContext)
.- Specified by:
handle
in interfaceServerConnection
- Parameters:
limit
- that is responsible for maximal concurrent request limit, the connection implementation is responsible invoking each request within the limit'sLimitAlgorithm.invoke(java.util.concurrent.Callable)
- Throws:
InterruptedException
- to interrupt any waiting state and terminate this connection
-
handle
Description copied from interface:ServerConnection
Start handling the connection. Data is provided throughServerConnectionSelector.connection(io.helidon.webserver.ConnectionContext)
.- Specified by:
handle
in interfaceServerConnection
- Parameters:
requestSemaphore
- semaphore that is responsible for maximal concurrent request limit, the connection implementation is responsible for acquiring a permit from the semaphore for the duration of a request, and releasing it when the request ends; please be very careful, as this may lead to complete stop of the server if incorrectly implemented- Throws:
InterruptedException
- to interrupt any waiting state and terminate this connection
-
clientSettings
Client settings, obtained from SETTINGS frame or HTTP/2 upgrade request.- Parameters:
http2Settings
- client settings to use
-
upgradeConnectionData
Connection headers from an upgrade request from HTTP/1.1.- Parameters:
prologue
- prologue of the HTTP/2 requestheaders
- headers to use for first stream (obtained from original HTTP/1.1 request)
-
expectPreface
public void expectPreface()Expect connection preface (prior knowledge). -
canInterrupt
public boolean canInterrupt()Description copied from interface:InterruptableTask
Signals if a task can be interrupted at the time this method is called.- Specified by:
canInterrupt
in interfaceInterruptableTask<Void>
- Returns:
- outcome of interruptable test
-
toString
-
idleTime
Description copied from interface:ServerConnection
How long is this connection idle. This is a duration from the last request to now.- Specified by:
idleTime
in interfaceServerConnection
- Returns:
- idle duration
-
close
public void close(boolean interrupt) Description copied from interface:ServerConnection
Close a connection. This may be called during shutdown of the server, or when idle timeout is reached.- Specified by:
close
in interfaceServerConnection
- Parameters:
interrupt
- whether to interrupt in progress requests (always interrupts idle requests waiting for initial request data)
-