Package akka.http.impl.engine.http2
Interface Http2StreamHandling
- All Superinterfaces:
akka.macros.LogHelper
,akka.macros.LogHelperMacro
public interface Http2StreamHandling
extends akka.macros.LogHelper
INTERNAL API
Handles HTTP/2 stream states
Accepts FrameEvent
s from the network side and emits ByteHttp2SubStream
s for streams
to be handled by the Akka HTTP layer.
Mixed into the Http2ServerDemux graph logic.
-
Nested Class Summary
Modifier and TypeInterfaceDescriptionstatic class
static class
Special state that allows collecting some incoming data before dispatching it either as strict or streamed entitystatic class
static class
We have closed the outgoing stream, but the incoming stream is still going.static class
static class
static class
static class
They have closed the incoming stream, but the outgoing stream is still going.static class
static class
static class
static class
static class
static class
static class
static class
static class
static class
static class
static interface
static class
static final class
static class
static class
static interface
static class
States roughly correspond to states as given in https://http2.github.io/http2-spec/#StreamStates. -
Method Summary
Modifier and TypeMethodDescriptionint
Closed()
Accessor for nested Scala objectvoid
dispatchSubstream
(FrameEvent.ParsedHeadersFrame initialHeaders, scala.util.Either<akka.util.ByteString, akka.stream.scaladsl.Source<Object, Object>> data, scala.collection.immutable.Map<AttributeKey<?>, Object> correlationAttributes) void
distributeWindowDeltaToAllStreams
(int delta) Called by multiplexer to distribute changes from INITIAL_WINDOW_SIZE to all streamsvoid
enqueueOutStream
(int streamId) void
handleOutgoingCreated
(Http2SubStream stream) Called by Http2ServerDemux when a stream comes in from the user-handlervoid
handleOutgoingEnded
(int streamId) void
handleOutgoingFailed
(int streamId, Throwable cause) void
Called by Http2ServerDemux to let the state machine handle StreamFrameEventsboolean
Idle()
Accessor for nested Scala objectvoid
incomingStreamPulled
(int streamId) Entry-point to handle IncomingStreamBuffer.onPull through the state machineboolean
isServer()
boolean
int
The "last peer-initiated stream that was or might be processed on the sending endpoint in this connection"void
Called when all streams in StreamHandling buffers are closed and the stage is completing.Accessor for nested Scala objectpullNextFrame
(int streamId, int maxSize) Called by the multiplexer if ready to send a data framevoid
pushGOAWAY
(Http2Protocol.ErrorCode errorCode, String debug) void
resetStream
(int streamId, Http2Protocol.ErrorCode errorCode) void
setMaxConcurrentStreams
(int newValue) settings()
void
Called to cleanup any state when the connection is torn downstreamFor
(int streamId) void
Tries to generate demand of SubStreams on the inlet from the user handler.void
updateAllStates
(scala.Function1<Http2StreamHandling.StreamState, Http2StreamHandling.StreamState> handle, String event, Object eventArg) void
updateState
(int streamId, scala.Function1<Http2StreamHandling.StreamState, Http2StreamHandling.StreamState> handle, String event, Object eventArg) <R> R
updateStateAndReturn
(int streamId, scala.Function1<Http2StreamHandling.StreamState, scala.Tuple2<Http2StreamHandling.StreamState, R>> handle, String event, Object eventArg) scala.Option<HttpEntity.ChunkStreamPart>
Methods inherited from interface akka.macros.LogHelper
isDebugEnabled, isInfoEnabled, isWarningEnabled, log, prefixString
-
Method Details
-
Idle
Http2StreamHandling.Idle$ Idle()Accessor for nested Scala object- Returns:
- (undocumented)
-
Closed
Http2StreamHandling.Closed$ Closed()Accessor for nested Scala object- Returns:
- (undocumented)
-
OutStream
Http2StreamHandling.OutStream$ OutStream()Accessor for nested Scala object- Returns:
- (undocumented)
-
isServer
boolean isServer() -
multiplexer
Http2Multiplexer multiplexer() -
settings
Http2CommonSettings settings() -
pushGOAWAY
-
dispatchSubstream
void dispatchSubstream(FrameEvent.ParsedHeadersFrame initialHeaders, scala.util.Either<akka.util.ByteString, akka.stream.scaladsl.Source<Object, Object>> data, scala.collection.immutable.Map<AttributeKey<?>, Object> correlationAttributes) -
isUpgraded
boolean isUpgraded() -
wrapTrailingHeaders
-
flowController
IncomingFlowController flowController() -
tryPullSubStreams
void tryPullSubStreams()Tries to generate demand of SubStreams on the inlet from the user handler. The attemp to demand will succeed if the inlet is open and has no pending pull, and, in the case of a client, if we're not exceedingthe number of active streams. This method must be invoked any time the collection of active streams or the value of maxConcurrentStreams are modified but the invocation must happen _after_ the collection or the limit are modified. -
lastStreamId
int lastStreamId()The "last peer-initiated stream that was or might be processed on the sending endpoint in this connection"- Returns:
- (undocumented)
-
setMaxConcurrentStreams
void setMaxConcurrentStreams(int newValue) -
hasCapacityToCreateStreams
boolean hasCapacityToCreateStreams()- Returns:
- true if the number of outgoing Active streams (Active includes Open and any variant of HalfClosedXxx) doesn't exceed MaxConcurrentStreams
-
onAllStreamsClosed
void onAllStreamsClosed()Called when all streams in StreamHandling buffers are closed and the stage is completing. -
streamFor
-
activeStreamCount
int activeStreamCount() -
handleStreamEvent
Called by Http2ServerDemux to let the state machine handle StreamFrameEvents -
handleOutgoingCreated
Called by Http2ServerDemux when a stream comes in from the user-handler -
handleOutgoingEnded
void handleOutgoingEnded(int streamId) -
handleOutgoingFailed
-
distributeWindowDeltaToAllStreams
void distributeWindowDeltaToAllStreams(int delta) Called by multiplexer to distribute changes from INITIAL_WINDOW_SIZE to all streams -
pullNextFrame
Called by the multiplexer if ready to send a data frame -
incomingStreamPulled
void incomingStreamPulled(int streamId) Entry-point to handle IncomingStreamBuffer.onPull through the state machine -
updateAllStates
void updateAllStates(scala.Function1<Http2StreamHandling.StreamState, Http2StreamHandling.StreamState> handle, String event, Object eventArg) -
updateState
void updateState(int streamId, scala.Function1<Http2StreamHandling.StreamState, Http2StreamHandling.StreamState> handle, String event, Object eventArg) -
enqueueOutStream
void enqueueOutStream(int streamId) -
updateStateAndReturn
<R> R updateStateAndReturn(int streamId, scala.Function1<Http2StreamHandling.StreamState, scala.Tuple2<Http2StreamHandling.StreamState, R>> handle, String event, Object eventArg) -
shutdownStreamHandling
void shutdownStreamHandling()Called to cleanup any state when the connection is torn down -
resetStream
-