public class Http2Blueprint
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
static class |
Http2Blueprint.BidiFlowExt<I1,O1,I2,O2,Mat> |
Constructor and Description |
---|
Http2Blueprint() |
Modifier and Type | Method and Description |
---|---|
static org.apache.pekko.stream.scaladsl.BidiFlow<Http2SubStream,FrameEvent,FrameEvent,Http2SubStream,ServerTerminator> |
clientDemux(Http2ClientSettings settings,
HttpHeaderParser masterHttpHeaderParser)
Creates substreams for every stream and manages stream state machines
and handles priorization (TODO: later)
|
static org.apache.pekko.stream.scaladsl.BidiFlow<HttpRequest,org.apache.pekko.util.ByteString,org.apache.pekko.util.ByteString,HttpResponse,org.apache.pekko.NotUsed> |
clientStack(ClientConnectionSettings settings,
org.apache.pekko.event.LoggingAdapter log,
TelemetrySpi telemetry) |
static org.apache.pekko.stream.scaladsl.BidiFlow<org.apache.pekko.util.ByteString,org.apache.pekko.util.ByteString,org.apache.pekko.util.ByteString,org.apache.pekko.util.ByteString,org.apache.pekko.NotUsed> |
errorHandling(org.apache.pekko.event.LoggingAdapter log) |
static scala.Option<java.lang.String> |
frameTypeAliasToFrameTypeName(java.lang.String frameType) |
static org.apache.pekko.stream.scaladsl.BidiFlow<FrameEvent,org.apache.pekko.util.ByteString,org.apache.pekko.util.ByteString,FrameEvent,org.apache.pekko.NotUsed> |
framing(org.apache.pekko.event.LoggingAdapter log) |
static org.apache.pekko.stream.scaladsl.BidiFlow<FrameEvent,org.apache.pekko.util.ByteString,org.apache.pekko.util.ByteString,FrameEvent,org.apache.pekko.NotUsed> |
framingClient(org.apache.pekko.event.LoggingAdapter log) |
static org.apache.pekko.stream.scaladsl.Flow<HttpRequest,HttpResponse,org.apache.pekko.NotUsed> |
handleWithStreamIdHeader(int parallelism,
scala.Function1<HttpRequest,scala.concurrent.Future<HttpResponse>> handler,
scala.concurrent.ExecutionContext ec)
Returns a flow that handles
parallelism requests in parallel, automatically keeping track of the
Http2StreamIdHeader between request and responses. |
static org.apache.pekko.stream.scaladsl.BidiFlow<FrameEvent,FrameEvent,FrameEvent,FrameEvent,org.apache.pekko.NotUsed> |
hpackCoding(HttpHeaderParser masterHttpHeaderParser,
ParserSettings parserSettings)
Runs hpack encoding and decoding.
|
static org.apache.pekko.stream.scaladsl.BidiFlow<HttpResponse,Http2SubStream,Http2SubStream,HttpRequest,org.apache.pekko.NotUsed> |
httpLayer(ServerSettings settings,
org.apache.pekko.event.LoggingAdapter log,
DateHeaderRendering dateHeaderRendering)
Translation between substream frames and Http messages (both directions)
To make use of parallelism requests and responses need to be associated (other than by ordering), suggestion
is to add a special (virtual) header containing the streamId (or any other kind of token) is added to the HttRequest
that must be reproduced in an HttpResponse.
|
static org.apache.pekko.stream.scaladsl.BidiFlow<HttpRequest,Http2SubStream,Http2SubStream,HttpResponse,org.apache.pekko.NotUsed> |
httpLayerClient(HttpHeaderParser masterHttpHeaderParser,
ClientConnectionSettings settings,
org.apache.pekko.event.LoggingAdapter log) |
static org.apache.pekko.stream.scaladsl.BidiFlow<org.apache.pekko.util.ByteString,org.apache.pekko.util.ByteString,org.apache.pekko.util.ByteString,org.apache.pekko.util.ByteString,org.apache.pekko.NotUsed> |
idleTimeoutIfConfigured(scala.concurrent.duration.Duration timeout) |
static void |
logParsingError(ErrorInfo info,
org.apache.pekko.event.LoggingAdapter log,
ParserSettings.ErrorLoggingVerbosity setting) |
static org.apache.pekko.stream.scaladsl.BidiFlow<Http2SubStream,FrameEvent,FrameEvent,Http2SubStream,ServerTerminator> |
serverDemux(Http2ServerSettings settings,
scala.collection.immutable.Seq<FrameEvent.Setting> initialDemuxerSettings,
boolean upgraded)
Creates substreams for every stream and manages stream state machines
and handles priorization (TODO: later)
|
static org.apache.pekko.stream.scaladsl.BidiFlow<HttpResponse,org.apache.pekko.util.ByteString,org.apache.pekko.util.ByteString,HttpRequest,ServerTerminator> |
serverStack(ServerSettings settings,
org.apache.pekko.event.LoggingAdapter log,
scala.collection.immutable.Seq<FrameEvent.Setting> initialDemuxerSettings,
boolean upgraded,
TelemetrySpi telemetry,
DateHeaderRendering dateHeaderRendering) |
static org.apache.pekko.stream.scaladsl.BidiFlow<HttpResponse,org.apache.pekko.stream.TLSProtocol.SslTlsOutbound,org.apache.pekko.stream.TLSProtocol.SslTlsInbound,HttpRequest,ServerTerminator> |
serverStackTls(ServerSettings settings,
org.apache.pekko.event.LoggingAdapter log,
TelemetrySpi telemetry,
DateHeaderRendering dateHeaderRendering) |
static org.apache.pekko.stream.scaladsl.BidiFlow<org.apache.pekko.util.ByteString,org.apache.pekko.stream.TLSProtocol.SslTlsOutbound,org.apache.pekko.stream.TLSProtocol.SslTlsInbound,org.apache.pekko.util.ByteString,org.apache.pekko.NotUsed> |
unwrapTls() |
public static org.apache.pekko.stream.scaladsl.BidiFlow<HttpResponse,org.apache.pekko.stream.TLSProtocol.SslTlsOutbound,org.apache.pekko.stream.TLSProtocol.SslTlsInbound,HttpRequest,ServerTerminator> serverStackTls(ServerSettings settings, org.apache.pekko.event.LoggingAdapter log, TelemetrySpi telemetry, DateHeaderRendering dateHeaderRendering)
public static org.apache.pekko.stream.scaladsl.BidiFlow<HttpResponse,org.apache.pekko.util.ByteString,org.apache.pekko.util.ByteString,HttpRequest,ServerTerminator> serverStack(ServerSettings settings, org.apache.pekko.event.LoggingAdapter log, scala.collection.immutable.Seq<FrameEvent.Setting> initialDemuxerSettings, boolean upgraded, TelemetrySpi telemetry, DateHeaderRendering dateHeaderRendering)
public static org.apache.pekko.stream.scaladsl.BidiFlow<HttpRequest,org.apache.pekko.util.ByteString,org.apache.pekko.util.ByteString,HttpResponse,org.apache.pekko.NotUsed> clientStack(ClientConnectionSettings settings, org.apache.pekko.event.LoggingAdapter log, TelemetrySpi telemetry)
public static org.apache.pekko.stream.scaladsl.BidiFlow<HttpRequest,Http2SubStream,Http2SubStream,HttpResponse,org.apache.pekko.NotUsed> httpLayerClient(HttpHeaderParser masterHttpHeaderParser, ClientConnectionSettings settings, org.apache.pekko.event.LoggingAdapter log)
public static org.apache.pekko.stream.scaladsl.BidiFlow<org.apache.pekko.util.ByteString,org.apache.pekko.util.ByteString,org.apache.pekko.util.ByteString,org.apache.pekko.util.ByteString,org.apache.pekko.NotUsed> idleTimeoutIfConfigured(scala.concurrent.duration.Duration timeout)
public static org.apache.pekko.stream.scaladsl.BidiFlow<org.apache.pekko.util.ByteString,org.apache.pekko.util.ByteString,org.apache.pekko.util.ByteString,org.apache.pekko.util.ByteString,org.apache.pekko.NotUsed> errorHandling(org.apache.pekko.event.LoggingAdapter log)
public static org.apache.pekko.stream.scaladsl.BidiFlow<FrameEvent,org.apache.pekko.util.ByteString,org.apache.pekko.util.ByteString,FrameEvent,org.apache.pekko.NotUsed> framing(org.apache.pekko.event.LoggingAdapter log)
public static org.apache.pekko.stream.scaladsl.BidiFlow<FrameEvent,org.apache.pekko.util.ByteString,org.apache.pekko.util.ByteString,FrameEvent,org.apache.pekko.NotUsed> framingClient(org.apache.pekko.event.LoggingAdapter log)
public static scala.Option<java.lang.String> frameTypeAliasToFrameTypeName(java.lang.String frameType)
public static org.apache.pekko.stream.scaladsl.BidiFlow<FrameEvent,FrameEvent,FrameEvent,FrameEvent,org.apache.pekko.NotUsed> hpackCoding(HttpHeaderParser masterHttpHeaderParser, ParserSettings parserSettings)
TODO: introduce another FrameEvent type that exclude HeadersFrame and ContinuationFrame from reaching the higher-level.
masterHttpHeaderParser
- (undocumented)parserSettings
- (undocumented)public static org.apache.pekko.stream.scaladsl.BidiFlow<Http2SubStream,FrameEvent,FrameEvent,Http2SubStream,ServerTerminator> serverDemux(Http2ServerSettings settings, scala.collection.immutable.Seq<FrameEvent.Setting> initialDemuxerSettings, boolean upgraded)
settings
- (undocumented)initialDemuxerSettings
- (undocumented)upgraded
- (undocumented)public static org.apache.pekko.stream.scaladsl.BidiFlow<Http2SubStream,FrameEvent,FrameEvent,Http2SubStream,ServerTerminator> clientDemux(Http2ClientSettings settings, HttpHeaderParser masterHttpHeaderParser)
settings
- (undocumented)masterHttpHeaderParser
- (undocumented)public static org.apache.pekko.stream.scaladsl.BidiFlow<HttpResponse,Http2SubStream,Http2SubStream,HttpRequest,org.apache.pekko.NotUsed> httpLayer(ServerSettings settings, org.apache.pekko.event.LoggingAdapter log, DateHeaderRendering dateHeaderRendering)
To make use of parallelism requests and responses need to be associated (other than by ordering), suggestion
is to add a special (virtual) header containing the streamId (or any other kind of token) is added to the HttRequest
that must be reproduced in an HttpResponse. This can be done automatically for the bind
API but for
bindFlow the user needs to take of this manually.
settings
- (undocumented)log
- (undocumented)dateHeaderRendering
- (undocumented)public static org.apache.pekko.stream.scaladsl.Flow<HttpRequest,HttpResponse,org.apache.pekko.NotUsed> handleWithStreamIdHeader(int parallelism, scala.Function1<HttpRequest,scala.concurrent.Future<HttpResponse>> handler, scala.concurrent.ExecutionContext ec)
parallelism
requests in parallel, automatically keeping track of the
Http2StreamIdHeader between request and responses.parallelism
- (undocumented)handler
- (undocumented)ec
- (undocumented)public static void logParsingError(ErrorInfo info, org.apache.pekko.event.LoggingAdapter log, ParserSettings.ErrorLoggingVerbosity setting)
public static org.apache.pekko.stream.scaladsl.BidiFlow<org.apache.pekko.util.ByteString,org.apache.pekko.stream.TLSProtocol.SslTlsOutbound,org.apache.pekko.stream.TLSProtocol.SslTlsInbound,org.apache.pekko.util.ByteString,org.apache.pekko.NotUsed> unwrapTls()