Add NWParameters configurator to bootstraps
This commit is contained in:
parent
3d21b85af4
commit
1f354a871f
|
|
@ -47,6 +47,7 @@ public final class NIOTSDatagramBootstrap {
|
|||
private var qos: DispatchQoS?
|
||||
private var udpOptions: NWProtocolUDP.Options = .init()
|
||||
private var tlsOptions: NWProtocolTLS.Options?
|
||||
private var nwParametersConfigurator: (@Sendable (inout NWParameters) -> Void)?
|
||||
|
||||
/// Create a `NIOTSDatagramConnectionBootstrap` on the `EventLoopGroup` `group`.
|
||||
///
|
||||
|
|
@ -133,6 +134,14 @@ public final class NIOTSDatagramBootstrap {
|
|||
return self
|
||||
}
|
||||
|
||||
/// Customise the `NWParameters` to be used when creating the connection.
|
||||
public func configureNWParameters(
|
||||
_ configurator: @Sendable @escaping (inout NWParameters) -> Void
|
||||
) -> Self {
|
||||
self.nwParametersConfigurator = configurator
|
||||
return self
|
||||
}
|
||||
|
||||
/// Specify the `host` and `port` to connect to for the UDP `Channel` that will be established.
|
||||
///
|
||||
/// - parameters:
|
||||
|
|
@ -188,7 +197,8 @@ public final class NIOTSDatagramBootstrap {
|
|||
eventLoop: self.group.next() as! NIOTSEventLoop,
|
||||
qos: self.qos,
|
||||
udpOptions: self.udpOptions,
|
||||
tlsOptions: self.tlsOptions
|
||||
tlsOptions: self.tlsOptions,
|
||||
nwParametersConfigurator: self.nwParametersConfigurator
|
||||
)
|
||||
let initializer = self.channelInitializer ?? { @Sendable _ in conn.eventLoop.makeSucceededFuture(()) }
|
||||
|
||||
|
|
|
|||
|
|
@ -140,8 +140,12 @@ internal final class NIOTSDatagramChannel: StateManagedNWConnectionChannel {
|
|||
internal var allowLocalEndpointReuse = false
|
||||
internal var multipathServiceType: NWParameters.MultipathServiceType = .disabled
|
||||
|
||||
private let nwParametersConfigurator: (@Sendable (inout NWParameters) -> Void)?
|
||||
|
||||
var parameters: NWParameters {
|
||||
NWParameters(dtls: self.tlsOptions, udp: self.udpOptions)
|
||||
var parameters = NWParameters(dtls: self.tlsOptions, udp: self.udpOptions)
|
||||
self.nwParametersConfigurator?(¶meters)
|
||||
return parameters
|
||||
}
|
||||
|
||||
var _inboundStreamOpen: Bool {
|
||||
|
|
@ -182,7 +186,8 @@ internal final class NIOTSDatagramChannel: StateManagedNWConnectionChannel {
|
|||
minimumIncompleteReceiveLength: Int = 1,
|
||||
maximumReceiveLength: Int = 8192,
|
||||
udpOptions: NWProtocolUDP.Options,
|
||||
tlsOptions: NWProtocolTLS.Options?
|
||||
tlsOptions: NWProtocolTLS.Options?,
|
||||
nwParametersConfigurator: (@Sendable (inout NWParameters) -> Void)?
|
||||
) {
|
||||
self.tsEventLoop = eventLoop
|
||||
self.closePromise = eventLoop.makePromise()
|
||||
|
|
@ -192,6 +197,7 @@ internal final class NIOTSDatagramChannel: StateManagedNWConnectionChannel {
|
|||
self.connectionQueue = eventLoop.channelQueue(label: "nio.nioTransportServices.connectionchannel", qos: qos)
|
||||
self.udpOptions = udpOptions
|
||||
self.tlsOptions = tlsOptions
|
||||
self.nwParametersConfigurator = nwParametersConfigurator
|
||||
|
||||
// Must come last, as it requires self to be completely initialized.
|
||||
self._pipeline = ChannelPipeline(channel: self)
|
||||
|
|
@ -206,7 +212,8 @@ internal final class NIOTSDatagramChannel: StateManagedNWConnectionChannel {
|
|||
minimumIncompleteReceiveLength: Int = 1,
|
||||
maximumReceiveLength: Int = 8192,
|
||||
udpOptions: NWProtocolUDP.Options,
|
||||
tlsOptions: NWProtocolTLS.Options?
|
||||
tlsOptions: NWProtocolTLS.Options?,
|
||||
nwParametersConfigurator: (@Sendable (inout NWParameters) -> Void)?
|
||||
) {
|
||||
self.init(
|
||||
eventLoop: eventLoop,
|
||||
|
|
@ -215,7 +222,8 @@ internal final class NIOTSDatagramChannel: StateManagedNWConnectionChannel {
|
|||
minimumIncompleteReceiveLength: minimumIncompleteReceiveLength,
|
||||
maximumReceiveLength: maximumReceiveLength,
|
||||
udpOptions: udpOptions,
|
||||
tlsOptions: tlsOptions
|
||||
tlsOptions: tlsOptions,
|
||||
nwParametersConfigurator: nwParametersConfigurator
|
||||
)
|
||||
self.connection = connection
|
||||
}
|
||||
|
|
|
|||
|
|
@ -66,6 +66,7 @@ public final class NIOTSDatagramListenerBootstrap {
|
|||
private var udpOptions: NWProtocolUDP.Options = .init()
|
||||
private var tlsOptions: NWProtocolTLS.Options?
|
||||
private var bindTimeout: TimeAmount?
|
||||
private var nwParametersConfigurator: (@Sendable (inout NWParameters) -> Void)?
|
||||
|
||||
/// Create a ``NIOTSListenerBootstrap`` for the `EventLoopGroup` `group`.
|
||||
///
|
||||
|
|
@ -236,6 +237,14 @@ public final class NIOTSDatagramListenerBootstrap {
|
|||
return self
|
||||
}
|
||||
|
||||
/// Customise the `NWParameters` to be used when creating the connection.
|
||||
public func configureNWParameters(
|
||||
_ configurator: @Sendable @escaping (inout NWParameters) -> Void
|
||||
) -> Self {
|
||||
self.nwParametersConfigurator = configurator
|
||||
return self
|
||||
}
|
||||
|
||||
/// Bind the `NIOTSListenerChannel` to `host` and `port`.
|
||||
///
|
||||
/// - parameters:
|
||||
|
|
@ -327,10 +336,12 @@ public final class NIOTSDatagramListenerBootstrap {
|
|||
qos: self.serverQoS,
|
||||
udpOptions: self.udpOptions,
|
||||
tlsOptions: self.tlsOptions,
|
||||
nwParametersConfigurator: self.nwParametersConfigurator,
|
||||
childLoopGroup: self.childGroup,
|
||||
childChannelQoS: self.childQoS,
|
||||
childUDPOptions: self.udpOptions,
|
||||
childTLSOptions: self.tlsOptions
|
||||
childTLSOptions: self.tlsOptions,
|
||||
childNWParametersConfigurator: self.nwParametersConfigurator
|
||||
)
|
||||
} else {
|
||||
serverChannel = NIOTSDatagramListenerChannel(
|
||||
|
|
@ -338,10 +349,12 @@ public final class NIOTSDatagramListenerBootstrap {
|
|||
qos: self.serverQoS,
|
||||
udpOptions: self.udpOptions,
|
||||
tlsOptions: self.tlsOptions,
|
||||
nwParametersConfigurator: self.nwParametersConfigurator,
|
||||
childLoopGroup: self.childGroup,
|
||||
childChannelQoS: self.childQoS,
|
||||
childUDPOptions: self.udpOptions,
|
||||
childTLSOptions: self.tlsOptions
|
||||
childTLSOptions: self.tlsOptions,
|
||||
childNWParametersConfigurator: self.nwParametersConfigurator
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -81,19 +81,23 @@ internal final class NIOTSDatagramListenerChannel: StateManagedListenerChannel<N
|
|||
qos: DispatchQoS? = nil,
|
||||
udpOptions: NWProtocolUDP.Options,
|
||||
tlsOptions: NWProtocolTLS.Options?,
|
||||
nwParametersConfigurator: (@Sendable (inout NWParameters) -> Void)?,
|
||||
childLoopGroup: EventLoopGroup,
|
||||
childChannelQoS: DispatchQoS?,
|
||||
childUDPOptions: NWProtocolUDP.Options,
|
||||
childTLSOptions: NWProtocolTLS.Options?
|
||||
childTLSOptions: NWProtocolTLS.Options?,
|
||||
childNWParametersConfigurator: (@Sendable (inout NWParameters) -> Void)?
|
||||
) {
|
||||
self.init(
|
||||
eventLoop: eventLoop,
|
||||
protocolOptions: .udp(udpOptions),
|
||||
tlsOptions: tlsOptions,
|
||||
nwParametersConfigurator: nwParametersConfigurator,
|
||||
childLoopGroup: childLoopGroup,
|
||||
childChannelQoS: childChannelQoS,
|
||||
childProtocolOptions: .udp(childUDPOptions),
|
||||
childTLSOptions: childTLSOptions
|
||||
childTLSOptions: childTLSOptions,
|
||||
childNWParametersConfigurator: childNWParametersConfigurator
|
||||
)
|
||||
}
|
||||
|
||||
|
|
@ -104,20 +108,24 @@ internal final class NIOTSDatagramListenerChannel: StateManagedListenerChannel<N
|
|||
qos: DispatchQoS? = nil,
|
||||
udpOptions: NWProtocolUDP.Options,
|
||||
tlsOptions: NWProtocolTLS.Options?,
|
||||
nwParametersConfigurator: (@Sendable (inout NWParameters) -> Void)?,
|
||||
childLoopGroup: EventLoopGroup,
|
||||
childChannelQoS: DispatchQoS?,
|
||||
childUDPOptions: NWProtocolUDP.Options,
|
||||
childTLSOptions: NWProtocolTLS.Options?
|
||||
childTLSOptions: NWProtocolTLS.Options?,
|
||||
childNWParametersConfigurator: (@Sendable (inout NWParameters) -> Void)?
|
||||
) {
|
||||
self.init(
|
||||
wrapping: listener,
|
||||
eventLoop: eventLoop,
|
||||
protocolOptions: .udp(udpOptions),
|
||||
tlsOptions: tlsOptions,
|
||||
nwParametersConfigurator: nwParametersConfigurator,
|
||||
childLoopGroup: childLoopGroup,
|
||||
childChannelQoS: childChannelQoS,
|
||||
childProtocolOptions: .udp(childUDPOptions),
|
||||
childTLSOptions: childTLSOptions
|
||||
childTLSOptions: childTLSOptions,
|
||||
childNWParametersConfigurator: childNWParametersConfigurator
|
||||
)
|
||||
}
|
||||
|
||||
|
|
@ -132,7 +140,8 @@ internal final class NIOTSDatagramListenerChannel: StateManagedListenerChannel<N
|
|||
on: self.childLoopGroup.next() as! NIOTSEventLoop,
|
||||
parent: self,
|
||||
udpOptions: self.childUDPOptions,
|
||||
tlsOptions: self.childTLSOptions
|
||||
tlsOptions: self.childTLSOptions,
|
||||
nwParametersConfigurator: self.childNWParametersConfigurator
|
||||
)
|
||||
|
||||
self.pipeline.fireChannelRead(newChannel)
|
||||
|
|
|
|||
|
|
@ -62,6 +62,7 @@ public final class NIOTSConnectionBootstrap {
|
|||
private var tcpOptions: NWProtocolTCP.Options = .init()
|
||||
private var tlsOptions: NWProtocolTLS.Options?
|
||||
private var protocolHandlers: (@Sendable () -> [ChannelHandler])? = nil
|
||||
private var nwParametersConfigurator: (@Sendable (inout NWParameters) -> Void)?
|
||||
|
||||
/// Create a `NIOTSConnectionBootstrap` on the `EventLoopGroup` `group`.
|
||||
///
|
||||
|
|
@ -165,6 +166,14 @@ public final class NIOTSConnectionBootstrap {
|
|||
self.channelOption(NIOTSChannelOptions.multipathServiceType, value: type)
|
||||
}
|
||||
|
||||
/// Customise the `NWParameters` to be used when creating the connection.
|
||||
public func configureNWParameters(
|
||||
_ configurator: @Sendable @escaping (inout NWParameters) -> Void
|
||||
) -> Self {
|
||||
self.nwParametersConfigurator = configurator
|
||||
return self
|
||||
}
|
||||
|
||||
/// Specify the `host` and `port` to connect to for the TCP `Channel` that will be established.
|
||||
///
|
||||
/// - parameters:
|
||||
|
|
@ -243,14 +252,16 @@ public final class NIOTSConnectionBootstrap {
|
|||
wrapping: newConnection,
|
||||
on: self.group.next() as! NIOTSEventLoop,
|
||||
tcpOptions: self.tcpOptions,
|
||||
tlsOptions: self.tlsOptions
|
||||
tlsOptions: self.tlsOptions,
|
||||
nwParametersConfigurator: self.nwParametersConfigurator
|
||||
)
|
||||
} else {
|
||||
conn = NIOTSConnectionChannel(
|
||||
eventLoop: self.group.next() as! NIOTSEventLoop,
|
||||
qos: self.qos,
|
||||
tcpOptions: self.tcpOptions,
|
||||
tlsOptions: self.tlsOptions
|
||||
tlsOptions: self.tlsOptions,
|
||||
nwParametersConfigurator: self.nwParametersConfigurator
|
||||
)
|
||||
}
|
||||
let initializer = self.channelInitializer
|
||||
|
|
@ -437,14 +448,16 @@ extension NIOTSConnectionBootstrap {
|
|||
wrapping: newConnection,
|
||||
on: self.group.next() as! NIOTSEventLoop,
|
||||
tcpOptions: self.tcpOptions,
|
||||
tlsOptions: self.tlsOptions
|
||||
tlsOptions: self.tlsOptions,
|
||||
nwParametersConfigurator: self.nwParametersConfigurator
|
||||
)
|
||||
} else {
|
||||
connectionChannel = NIOTSConnectionChannel(
|
||||
eventLoop: self.group.next() as! NIOTSEventLoop,
|
||||
qos: self.qos,
|
||||
tcpOptions: self.tcpOptions,
|
||||
tlsOptions: self.tlsOptions
|
||||
tlsOptions: self.tlsOptions,
|
||||
nwParametersConfigurator: self.nwParametersConfigurator
|
||||
)
|
||||
}
|
||||
let initializer = self.channelInitializer
|
||||
|
|
|
|||
|
|
@ -164,8 +164,12 @@ internal final class NIOTSConnectionChannel: StateManagedNWConnectionChannel {
|
|||
/// An `EventLoopPromise` that will be succeeded or failed when a connection attempt succeeds or fails.
|
||||
internal var connectPromise: EventLoopPromise<Void>?
|
||||
|
||||
private let nwParametersConfigurator: (@Sendable (inout NWParameters) -> Void)?
|
||||
|
||||
internal var parameters: NWParameters {
|
||||
NWParameters(tls: self.tlsOptions, tcp: self.tcpOptions)
|
||||
var parameters = NWParameters(tls: self.tlsOptions, tcp: self.tcpOptions)
|
||||
self.nwParametersConfigurator?(¶meters)
|
||||
return parameters
|
||||
}
|
||||
|
||||
/// The TCP options for this connection.
|
||||
|
|
@ -242,7 +246,8 @@ internal final class NIOTSConnectionChannel: StateManagedNWConnectionChannel {
|
|||
minimumIncompleteReceiveLength: Int = 1,
|
||||
maximumReceiveLength: Int = 8192,
|
||||
tcpOptions: NWProtocolTCP.Options,
|
||||
tlsOptions: NWProtocolTLS.Options?
|
||||
tlsOptions: NWProtocolTLS.Options?,
|
||||
nwParametersConfigurator: (@Sendable (inout NWParameters) -> Void)?
|
||||
) {
|
||||
self.tsEventLoop = eventLoop
|
||||
self.closePromise = eventLoop.makePromise()
|
||||
|
|
@ -252,6 +257,7 @@ internal final class NIOTSConnectionChannel: StateManagedNWConnectionChannel {
|
|||
self.connectionQueue = eventLoop.channelQueue(label: "nio.nioTransportServices.connectionchannel", qos: qos)
|
||||
self.tcpOptions = tcpOptions
|
||||
self.tlsOptions = tlsOptions
|
||||
self.nwParametersConfigurator = nwParametersConfigurator
|
||||
|
||||
// Must come last, as it requires self to be completely initialized.
|
||||
self._pipeline = ChannelPipeline(channel: self)
|
||||
|
|
@ -266,7 +272,8 @@ internal final class NIOTSConnectionChannel: StateManagedNWConnectionChannel {
|
|||
minimumIncompleteReceiveLength: Int = 1,
|
||||
maximumReceiveLength: Int = 8192,
|
||||
tcpOptions: NWProtocolTCP.Options,
|
||||
tlsOptions: NWProtocolTLS.Options?
|
||||
tlsOptions: NWProtocolTLS.Options?,
|
||||
nwParametersConfigurator: (@Sendable (inout NWParameters) -> Void)?
|
||||
) {
|
||||
self.init(
|
||||
eventLoop: eventLoop,
|
||||
|
|
@ -275,7 +282,8 @@ internal final class NIOTSConnectionChannel: StateManagedNWConnectionChannel {
|
|||
minimumIncompleteReceiveLength: minimumIncompleteReceiveLength,
|
||||
maximumReceiveLength: maximumReceiveLength,
|
||||
tcpOptions: tcpOptions,
|
||||
tlsOptions: tlsOptions
|
||||
tlsOptions: tlsOptions,
|
||||
nwParametersConfigurator: nwParametersConfigurator
|
||||
)
|
||||
self.connection = connection
|
||||
}
|
||||
|
|
|
|||
|
|
@ -66,6 +66,7 @@ public final class NIOTSListenerBootstrap {
|
|||
private var tcpOptions: NWProtocolTCP.Options = .init()
|
||||
private var tlsOptions: NWProtocolTLS.Options?
|
||||
private var bindTimeout: TimeAmount?
|
||||
private var nwParametersConfigurator: (@Sendable (inout NWParameters) -> Void)?
|
||||
|
||||
/// Create a ``NIOTSListenerBootstrap`` for the `EventLoopGroup` `group`.
|
||||
///
|
||||
|
|
@ -337,10 +338,12 @@ public final class NIOTSListenerBootstrap {
|
|||
qos: self.serverQoS,
|
||||
tcpOptions: self.tcpOptions,
|
||||
tlsOptions: self.tlsOptions,
|
||||
nwParametersConfigurator: self.nwParametersConfigurator,
|
||||
childLoopGroup: self.childGroup,
|
||||
childChannelQoS: self.childQoS,
|
||||
childTCPOptions: self.tcpOptions,
|
||||
childTLSOptions: self.tlsOptions
|
||||
childTLSOptions: self.tlsOptions,
|
||||
childNWParametersConfigurator: self.nwParametersConfigurator
|
||||
)
|
||||
} else {
|
||||
serverChannel = NIOTSListenerChannel(
|
||||
|
|
@ -348,10 +351,12 @@ public final class NIOTSListenerBootstrap {
|
|||
qos: self.serverQoS,
|
||||
tcpOptions: self.tcpOptions,
|
||||
tlsOptions: self.tlsOptions,
|
||||
nwParametersConfigurator: self.nwParametersConfigurator,
|
||||
childLoopGroup: self.childGroup,
|
||||
childChannelQoS: self.childQoS,
|
||||
childTCPOptions: self.tcpOptions,
|
||||
childTLSOptions: self.tlsOptions
|
||||
childTLSOptions: self.tlsOptions,
|
||||
childNWParametersConfigurator: self.nwParametersConfigurator
|
||||
)
|
||||
}
|
||||
|
||||
|
|
@ -558,10 +563,12 @@ extension NIOTSListenerBootstrap {
|
|||
qos: self.serverQoS,
|
||||
tcpOptions: self.tcpOptions,
|
||||
tlsOptions: self.tlsOptions,
|
||||
nwParametersConfigurator: self.nwParametersConfigurator,
|
||||
childLoopGroup: self.childGroup,
|
||||
childChannelQoS: self.childQoS,
|
||||
childTCPOptions: self.tcpOptions,
|
||||
childTLSOptions: self.tlsOptions
|
||||
childTLSOptions: self.tlsOptions,
|
||||
childNWParametersConfigurator: self.nwParametersConfigurator
|
||||
)
|
||||
} else {
|
||||
serverChannel = NIOTSListenerChannel(
|
||||
|
|
@ -569,10 +576,12 @@ extension NIOTSListenerBootstrap {
|
|||
qos: self.serverQoS,
|
||||
tcpOptions: self.tcpOptions,
|
||||
tlsOptions: self.tlsOptions,
|
||||
nwParametersConfigurator: self.nwParametersConfigurator,
|
||||
childLoopGroup: self.childGroup,
|
||||
childChannelQoS: self.childQoS,
|
||||
childTCPOptions: self.tcpOptions,
|
||||
childTLSOptions: self.tlsOptions
|
||||
childTLSOptions: self.tlsOptions,
|
||||
childNWParametersConfigurator: self.nwParametersConfigurator
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -81,19 +81,23 @@ internal final class NIOTSListenerChannel: StateManagedListenerChannel<NIOTSConn
|
|||
qos: DispatchQoS? = nil,
|
||||
tcpOptions: NWProtocolTCP.Options,
|
||||
tlsOptions: NWProtocolTLS.Options?,
|
||||
nwParametersConfigurator: (@Sendable (inout NWParameters) -> Void)?,
|
||||
childLoopGroup: EventLoopGroup,
|
||||
childChannelQoS: DispatchQoS?,
|
||||
childTCPOptions: NWProtocolTCP.Options,
|
||||
childTLSOptions: NWProtocolTLS.Options?
|
||||
childTLSOptions: NWProtocolTLS.Options?,
|
||||
childNWParametersConfigurator: (@Sendable (inout NWParameters) -> Void)?
|
||||
) {
|
||||
self.init(
|
||||
eventLoop: eventLoop,
|
||||
protocolOptions: .tcp(tcpOptions),
|
||||
tlsOptions: tlsOptions,
|
||||
nwParametersConfigurator: nwParametersConfigurator,
|
||||
childLoopGroup: childLoopGroup,
|
||||
childChannelQoS: childChannelQoS,
|
||||
childProtocolOptions: .tcp(childTCPOptions),
|
||||
childTLSOptions: childTLSOptions
|
||||
childTLSOptions: childTLSOptions,
|
||||
childNWParametersConfigurator: childNWParametersConfigurator
|
||||
)
|
||||
}
|
||||
|
||||
|
|
@ -104,10 +108,12 @@ internal final class NIOTSListenerChannel: StateManagedListenerChannel<NIOTSConn
|
|||
qos: DispatchQoS? = nil,
|
||||
tcpOptions: NWProtocolTCP.Options,
|
||||
tlsOptions: NWProtocolTLS.Options?,
|
||||
nwParametersConfigurator: (@Sendable (inout NWParameters) -> Void)?,
|
||||
childLoopGroup: EventLoopGroup,
|
||||
childChannelQoS: DispatchQoS?,
|
||||
childTCPOptions: NWProtocolTCP.Options,
|
||||
childTLSOptions: NWProtocolTLS.Options?
|
||||
childTLSOptions: NWProtocolTLS.Options?,
|
||||
childNWParametersConfigurator: (@Sendable (inout NWParameters) -> Void)?
|
||||
) {
|
||||
self.init(
|
||||
wrapping: listener,
|
||||
|
|
@ -115,10 +121,12 @@ internal final class NIOTSListenerChannel: StateManagedListenerChannel<NIOTSConn
|
|||
qos: qos,
|
||||
protocolOptions: .tcp(tcpOptions),
|
||||
tlsOptions: tlsOptions,
|
||||
nwParametersConfigurator: nwParametersConfigurator,
|
||||
childLoopGroup: childLoopGroup,
|
||||
childChannelQoS: childChannelQoS,
|
||||
childProtocolOptions: .tcp(childTCPOptions),
|
||||
childTLSOptions: childTLSOptions
|
||||
childTLSOptions: childTLSOptions,
|
||||
childNWParametersConfigurator: childNWParametersConfigurator
|
||||
)
|
||||
}
|
||||
|
||||
|
|
@ -134,7 +142,8 @@ internal final class NIOTSListenerChannel: StateManagedListenerChannel<NIOTSConn
|
|||
parent: self,
|
||||
qos: self.childChannelQoS,
|
||||
tcpOptions: self.childTCPOptions,
|
||||
tlsOptions: self.childTLSOptions
|
||||
tlsOptions: self.childTLSOptions,
|
||||
nwParametersConfigurator: self.childNWParametersConfigurator
|
||||
)
|
||||
|
||||
self.pipeline.fireChannelRead(newChannel)
|
||||
|
|
|
|||
|
|
@ -67,6 +67,8 @@ internal class StateManagedListenerChannel<ChildChannel: StateManagedChannel>: S
|
|||
/// The TLS options for this listener.
|
||||
internal let tlsOptions: NWProtocolTLS.Options?
|
||||
|
||||
internal var nwParametersConfigurator: (@Sendable (inout NWParameters) -> Void)?
|
||||
|
||||
/// The `DispatchQueue` that socket events for this connection will be dispatched onto.
|
||||
internal let connectionQueue: DispatchQueue
|
||||
|
||||
|
|
@ -113,6 +115,8 @@ internal class StateManagedListenerChannel<ChildChannel: StateManagedChannel>: S
|
|||
/// The TLS options to use for child channels.
|
||||
internal let childTLSOptions: NWProtocolTLS.Options?
|
||||
|
||||
internal var childNWParametersConfigurator: (@Sendable (inout NWParameters) -> Void)?
|
||||
|
||||
/// The cache of the local and remote socket addresses. Must be accessed using _addressCacheLock.
|
||||
internal var addressCache = AddressCache(local: nil, remote: nil)
|
||||
|
||||
|
|
@ -130,10 +134,12 @@ internal class StateManagedListenerChannel<ChildChannel: StateManagedChannel>: S
|
|||
qos: DispatchQoS? = nil,
|
||||
protocolOptions: ProtocolOptions,
|
||||
tlsOptions: NWProtocolTLS.Options?,
|
||||
nwParametersConfigurator: (@Sendable (inout NWParameters) -> Void)?,
|
||||
childLoopGroup: EventLoopGroup,
|
||||
childChannelQoS: DispatchQoS?,
|
||||
childProtocolOptions: ProtocolOptions,
|
||||
childTLSOptions: NWProtocolTLS.Options?
|
||||
childTLSOptions: NWProtocolTLS.Options?,
|
||||
childNWParametersConfigurator: (@Sendable (inout NWParameters) -> Void)?
|
||||
) {
|
||||
self.tsEventLoop = eventLoop
|
||||
self.closePromise = eventLoop.makePromise()
|
||||
|
|
@ -155,20 +161,24 @@ internal class StateManagedListenerChannel<ChildChannel: StateManagedChannel>: S
|
|||
qos: DispatchQoS? = nil,
|
||||
protocolOptions: ProtocolOptions,
|
||||
tlsOptions: NWProtocolTLS.Options?,
|
||||
nwParametersConfigurator: (@Sendable (inout NWParameters) -> Void)?,
|
||||
childLoopGroup: EventLoopGroup,
|
||||
childChannelQoS: DispatchQoS?,
|
||||
childProtocolOptions: ProtocolOptions,
|
||||
childTLSOptions: NWProtocolTLS.Options?
|
||||
childTLSOptions: NWProtocolTLS.Options?,
|
||||
childNWParametersConfigurator: (@Sendable (inout NWParameters) -> Void)?
|
||||
) {
|
||||
self.init(
|
||||
eventLoop: eventLoop,
|
||||
qos: qos,
|
||||
protocolOptions: protocolOptions,
|
||||
tlsOptions: tlsOptions,
|
||||
nwParametersConfigurator: nwParametersConfigurator,
|
||||
childLoopGroup: childLoopGroup,
|
||||
childChannelQoS: childChannelQoS,
|
||||
childProtocolOptions: childProtocolOptions,
|
||||
childTLSOptions: childTLSOptions
|
||||
childTLSOptions: childTLSOptions,
|
||||
childNWParametersConfigurator: childNWParametersConfigurator
|
||||
)
|
||||
self.nwListener = listener
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,13 +37,14 @@ final class NIOTSChannelMetadataTests: XCTestCase {
|
|||
}.wait()
|
||||
|
||||
}
|
||||
func testThowsIfCalledOnANonInitializedChannel() {
|
||||
func testThrowsIfCalledOnANonInitializedChannel() {
|
||||
let eventLoopGroup = NIOTSEventLoopGroup()
|
||||
defer { XCTAssertNoThrow(try eventLoopGroup.syncShutdownGracefully()) }
|
||||
let channel = NIOTSConnectionChannel(
|
||||
eventLoop: eventLoopGroup.next() as! NIOTSEventLoop,
|
||||
tcpOptions: .init(),
|
||||
tlsOptions: .init()
|
||||
tlsOptions: .init(),
|
||||
nwParametersConfigurator: nil
|
||||
)
|
||||
XCTAssertThrowsError(try channel.getMetadata(definition: NWProtocolTLS.definition).wait()) { error in
|
||||
XCTAssertTrue(error is NIOTSConnectionNotInitialized, "unexpected error \(error)")
|
||||
|
|
|
|||
Loading…
Reference in New Issue