ApplicationProtocolNegotiationHandler

    A helper ChannelInboundHandler that makes it easy to swap channel pipelines based on the result of an ALPN negotiation.

    ApplicationProtocolNegotiationHandler.swift:67
    final class ApplicationProtocolNegotiationHandler

    The standard pattern used by applications that want to use ALPN is to select an application protocol based on the result, optionally falling back to some default protocol. To do this in SwiftNIO requires that the channel pipeline be reconfigured based on the result of the ALPN negotiation. This channel handler encapsulates that logic in a generic form that doesn’t depend on the specific TLS implementation in use by using TLSUserEvent

    The user of this channel handler provides a single closure that is called with an ALPNResult when the ALPN negotiation is complete. Based on that result the user is free to reconfigure the ChannelPipeline as required, and should return an EventLoopFuture that will complete when the pipeline is reconfigured.

    Until the EventLoopFuture completes, this channel handler will buffer inbound data. When the EventLoopFuture completes, the buffered data will be replayed down the channel. Then, finally, this channel handler will automatically remove itself from the channel pipeline, leaving the pipeline in its final configuration.

    Citizens in NIOTLS

    Conformances

    • protocol ChannelHandler

      Base protocol for handlers that handle I/O events or intercept an I/O operation.

    • protocol ChannelInboundHandler

      ChannelHandler which handles inbound I/O events for a Channel.

    • protocol RemovableChannelHandler

      A RemovableChannelHandler is a ChannelHandler that can be dynamically removed from a ChannelPipeline whilst the Channel is operating normally. A RemovableChannelHandler is required to remove itself from the ChannelPipeline (using ChannelHandlerContext.leavePipeline) as soon as possible.

    Show implementation details (2)

    Hide implementation details

    Typealiases

    Type members

    Instance members

    Instance features