Interface Stream
- All Known Subinterfaces:
IStream
- All Known Implementing Classes:
HTTP2Stream
A Stream
represents a bidirectional exchange of data on top of a Session
.
Differently from socket streams, where the input and output streams are permanently associated with the socket (and hence with the connection that the socket represents), there can be multiple HTTP/2 streams present concurrently for an HTTP/2 session.
A Stream
maps to an HTTP request/response cycle, and after the request/response cycle is
completed, the stream is closed and removed from the session.
Like Session
, Stream
is the active part and by calling its API applications
can generate events on the stream; conversely, Stream.Listener
is the passive part, and
its callbacks are invoked when events happen on the stream.
- See Also:
-
Nested Class Summary
Modifier and TypeInterfaceDescriptionstatic interface
AStream.Listener
is the passive counterpart of aStream
and receives events happening on an HTTP/2 stream. -
Method Summary
Modifier and TypeMethodDescriptiondefault CompletableFuture<Stream>
Sends the given DATAframe
.void
Sends the given DATAframe
.void
demand
(long n) Demandsn
moreDATA
frames for this stream.getAttribute
(String key) int
getId()
long
default CompletableFuture<Stream>
headers
(HeadersFrame frame) Sends the given HEADERSframe
representing an HTTP response.void
headers
(HeadersFrame frame, Callback callback) Sends the given HEADERSframe
.boolean
isClosed()
boolean
isReset()
default CompletableFuture<Stream>
push
(PushPromiseFrame frame, Stream.Listener listener) Sends the given PUSH_PROMISEframe
.void
push
(PushPromiseFrame frame, Promise<Stream> promise, Stream.Listener listener) Sends the given PUSH_PROMISEframe
.removeAttribute
(String key) void
reset
(ResetFrame frame, Callback callback) Sends the given RST_STREAMframe
.void
setAttribute
(String key, Object value) void
setIdleTimeout
(long idleTimeout)
-
Method Details
-
getId
int getId()- Returns:
- the stream unique id
-
getSession
Session getSession()- Returns:
- the session this stream is associated to
-
headers
Sends the given HEADERS
frame
representing an HTTP response.- Parameters:
frame
- the HEADERS frame to send- Returns:
- the CompletableFuture that gets notified when the frame has been sent
-
headers
Sends the given HEADERS
frame
.Typically used to send an HTTP response or to send the HTTP response trailers.
- Parameters:
frame
- the HEADERS frame to sendcallback
- the callback that gets notified when the frame has been sent
-
push
Sends the given PUSH_PROMISE
frame
.- Parameters:
frame
- the PUSH_PROMISE frame to sendlistener
- the listener that gets notified of stream events- Returns:
- the CompletableFuture that gets notified of the pushed stream creation
-
push
Sends the given PUSH_PROMISE
frame
.- Parameters:
frame
- the PUSH_PROMISE frame to sendpromise
- the promise that gets notified of the pushed stream creationlistener
- the listener that gets notified of stream events
-
data
Sends the given DATA
frame
.- Parameters:
frame
- the DATA frame to send- Returns:
- the CompletableFuture that gets notified when the frame has been sent
-
data
Sends the given DATA
frame
.- Parameters:
frame
- the DATA frame to sendcallback
- the callback that gets notified when the frame has been sent
-
reset
Sends the given RST_STREAM
frame
.- Parameters:
frame
- the RST_FRAME to sendcallback
- the callback that gets notified when the frame has been sent
-
getAttribute
- Parameters:
key
- the attribute key- Returns:
- an arbitrary object associated with the given key to this stream or null if no object can be found for the given key.
- See Also:
-
setAttribute
- Parameters:
key
- the attribute keyvalue
- an arbitrary object to associate with the given key to this stream- See Also:
-
removeAttribute
- Parameters:
key
- the attribute key- Returns:
- the arbitrary object associated with the given key to this stream
- See Also:
-
isReset
boolean isReset()- Returns:
- whether this stream has been reset
-
isClosed
boolean isClosed()- Returns:
- whether this stream is closed, both locally and remotely.
-
getIdleTimeout
long getIdleTimeout()- Returns:
- the stream idle timeout
- See Also:
-
setIdleTimeout
void setIdleTimeout(long idleTimeout) - Parameters:
idleTimeout
- the stream idle timeout- See Also:
-
demand
void demand(long n) Demands
n
moreDATA
frames for this stream.- Parameters:
n
- the increment of the demand, must be greater than zero- See Also:
-