Interface Http2StreamHandling

  • All Superinterfaces:
    akka.macros.LogHelper, akka.macros.LogHelperMacro

    public interface Http2StreamHandling
    extends akka.macros.LogHelper

    Handles HTTP/2 stream states Accepts FrameEvents from the network side and emits ByteHttp2SubStreams for streams to be handled by the Akka HTTP layer.

    Mixed into the Http2ServerDemux graph logic.

    • Method Detail

      • isServer

        boolean isServer()
      • dispatchSubstream

        void dispatchSubstream​(FrameEvent.ParsedHeadersFrame initialHeaders,
                               scala.util.Either<akka.util.ByteString,​<java.lang.Object,​java.lang.Object>> data,
                               scala.collection.immutable.Map<AttributeKey<?>,​java.lang.Object> correlationAttributes)
      • isUpgraded

        boolean isUpgraded()
      • 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"

      • setMaxConcurrentStreams

        void setMaxConcurrentStreams​(int newValue)
      • hasCapacityToCreateStreams

        boolean hasCapacityToCreateStreams()
        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.
      • activeStreamCount

        int activeStreamCount()
      • handleStreamEvent

        void handleStreamEvent​(FrameEvent.StreamFrameEvent e)
        Called by Http2ServerDemux to let the state machine handle StreamFrameEvents
      • handleOutgoingCreated

        void handleOutgoingCreated​(Http2SubStream stream)
        Called by Http2ServerDemux when a stream comes in from the user-handler
      • handleOutgoingEnded

        void handleOutgoingEnded​(int streamId)
      • handleOutgoingFailed

        void handleOutgoingFailed​(int streamId,
                                  java.lang.Throwable cause)
      • distributeWindowDeltaToAllStreams

        void distributeWindowDeltaToAllStreams​(int delta)
        Called by multiplexer to distribute changes from INITIAL_WINDOW_SIZE to all streams
      • pullNextFrame

        PullFrameResult pullNextFrame​(int streamId,
                                      int maxSize)
        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
      • enqueueOutStream

        void enqueueOutStream​(int streamId)
      • shutdownStreamHandling

        void shutdownStreamHandling()
        Called to cleanup any state when the connection is torn down