remove ELP.succeed/fail's labels (#776)

Motivation:

EventLoopPromise.succeed/fail has extraneous labels that don't add
anything but noise.

Modifications:

remove extraneous labels

Result:

less noise in the code
This commit is contained in:
Johannes Weiss 2019-01-24 16:42:53 +00:00 committed by GitHub
parent a87859085e
commit c4ff795dda
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
48 changed files with 453 additions and 417 deletions

View File

@ -94,7 +94,7 @@ private final class PingHandler: ChannelInboundHandler {
}
} else {
ctx.close(promise: nil)
self.allDone.fail(error: PingPongFailure(problem: "wrong buffer received: \(buf.debugDescription)"))
self.allDone.fail(PingPongFailure(problem: "wrong buffer received: \(buf.debugDescription)"))
}
}
@ -165,7 +165,7 @@ public func swiftMain() -> Int {
func errorCaught(ctx: ChannelHandlerContext, error: Error) {
ctx.channel.close(promise: nil)
self.isDonePromise.fail(error: error)
self.isDonePromise.fail(error)
}
func channelRead(ctx: ChannelHandlerContext, data: NIOAny) {
@ -352,7 +352,7 @@ public func swiftMain() -> Int {
let f = p.futureResult.flatMap { (r: Int) -> EventLoopFuture<Int> in
// This call allocates a new Future, and
// so does flatMap(), so this is two Futures.
return loop.makeSucceededFuture(result: r + 1)
return loop.makeSucceededFuture(r + 1)
}.flatMapThrowing { (r: Int) -> Int in
// flatMapThrowing allocates a new Future, and calls `flatMap`
// which also allocates, so this is two.
@ -368,7 +368,7 @@ public func swiftMain() -> Int {
}.flatMapError { (err: Error) -> EventLoopFuture<Int> in
// This call allocates a new Future, and so does flatMapError,
// so this is two Futures.
return loop.makeFailedFuture(error: err)
return loop.makeFailedFuture(err)
}.flatMapErrorThrowing { (err: Error) -> Int in
// flatMapError allocates a new Future, and calls flatMapError,
// so this is two Futures
@ -378,7 +378,7 @@ public func swiftMain() -> Int {
// this is two Futures.
return 1
}
p.succeed(result: 0)
p.succeed(0)
// Wait also allocates a lock.
try! f.wait()
@ -395,12 +395,12 @@ public func swiftMain() -> Int {
let f = p1.futureResult
.and(p2.futureResult)
.and(p3.futureResult)
.and(result: 1)
.and(result: 1)
.and(value: 1)
.and(value: 1)
p1.succeed(result: 1)
p2.succeed(result: 1)
p3.succeed(result: 1)
p1.succeed(1)
p2.succeed(1)
p3.succeed(1)
let r = try! f.wait()
}
let el = EmbeddedEventLoop()

View File

@ -97,28 +97,28 @@ private struct SocketChannelLifecycleManager {
case (.fresh, .beginRegistration):
self.currentState = .preRegistered
return { promise, pipeline in
promise?.succeed(result: ())
promise?.succeed(())
pipeline.fireChannelRegistered0()
}
case (.fresh, .close):
self.currentState = .closed
return { (promise, _: ChannelPipeline) in
promise?.succeed(result: ())
promise?.succeed(())
}
// origin: .preRegistered
case (.preRegistered, .finishRegistration):
self.currentState = .fullyRegistered
return { (promise, _: ChannelPipeline) in
promise?.succeed(result: ())
promise?.succeed(())
}
// origin: .fullyRegistered
case (.fullyRegistered, .activate):
self.currentState = .activated
return { promise, pipeline in
promise?.succeed(result: ())
promise?.succeed(())
pipeline.fireChannelActive0()
}
@ -126,7 +126,7 @@ private struct SocketChannelLifecycleManager {
case (.preRegistered, .close), (.fullyRegistered, .close):
self.currentState = .closed
return { promise, pipeline in
promise?.succeed(result: ())
promise?.succeed(())
pipeline.fireChannelUnregistered0()
}
@ -134,7 +134,7 @@ private struct SocketChannelLifecycleManager {
case (.activated, .close):
self.currentState = .closed
return { promise, pipeline in
promise?.succeed(result: ())
promise?.succeed(())
pipeline.fireChannelInactive0()
pipeline.fireChannelUnregistered0()
}
@ -515,9 +515,9 @@ class BaseSocketChannel<T: BaseSocket>: SelectableChannel, ChannelCore {
public func getOption<T>(option: T) -> EventLoopFuture<T.OptionType> where T: ChannelOption {
if eventLoop.inEventLoop {
do {
return eventLoop.makeSucceededFuture(result: try getOption0(option: option))
return eventLoop.makeSucceededFuture(try getOption0(option: option))
} catch {
return eventLoop.makeFailedFuture(error: error)
return eventLoop.makeFailedFuture(error)
}
} else {
return eventLoop.submit { try self.getOption0(option: option) }
@ -568,11 +568,11 @@ class BaseSocketChannel<T: BaseSocket>: SelectableChannel, ChannelCore {
self.eventLoop.assertInEventLoop()
guard self.isOpen else {
promise?.fail(error: ChannelError.ioOnClosedChannel)
promise?.fail(ChannelError.ioOnClosedChannel)
return
}
guard self.lifecycleManager.isPreRegistered else {
promise?.fail(error: ChannelError.inappropriateOperationForState)
promise?.fail(ChannelError.inappropriateOperationForState)
return
}
@ -587,12 +587,12 @@ class BaseSocketChannel<T: BaseSocket>: SelectableChannel, ChannelCore {
guard self.isOpen else {
// Channel was already closed, fail the promise and not even queue it.
promise?.fail(error: ChannelError.ioOnClosedChannel)
promise?.fail(ChannelError.ioOnClosedChannel)
return
}
guard self.lifecycleManager.isActive else {
promise?.fail(error: ChannelError.inappropriateOperationForState)
promise?.fail(ChannelError.inappropriateOperationForState)
return
}
@ -698,12 +698,12 @@ class BaseSocketChannel<T: BaseSocket>: SelectableChannel, ChannelCore {
self.eventLoop.assertInEventLoop()
guard self.isOpen else {
promise?.fail(error: ChannelError.alreadyClosed)
promise?.fail(ChannelError.alreadyClosed)
return
}
guard mode == .all else {
promise?.fail(error: ChannelError.operationUnsupported)
promise?.fail(ChannelError.operationUnsupported)
return
}
@ -727,7 +727,7 @@ class BaseSocketChannel<T: BaseSocket>: SelectableChannel, ChannelCore {
p = promise
} catch {
errorCallouts.append { (_: ChannelPipeline) in
promise?.fail(error: error)
promise?.fail(error)
// Set p to nil as we want to ensure we pass nil to becomeInactive0(...) so we not try to notify the promise again.
}
p = nil
@ -749,7 +749,7 @@ class BaseSocketChannel<T: BaseSocket>: SelectableChannel, ChannelCore {
if let connectPromise = self.pendingConnect {
self.pendingConnect = nil
connectPromise.fail(error: error)
connectPromise.fail(error)
}
callouts(p, self.pipeline)
@ -758,7 +758,7 @@ class BaseSocketChannel<T: BaseSocket>: SelectableChannel, ChannelCore {
// ensure this is executed in a delayed fashion as the users code may still traverse the pipeline
self.pipeline.removeHandlers()
self.closePromise.succeed(result: ())
self.closePromise.succeed(())
// Now reset the addresses as we notified all handlers / futures.
self.unsetCachedAddressesFromSocket()
@ -770,12 +770,12 @@ class BaseSocketChannel<T: BaseSocket>: SelectableChannel, ChannelCore {
self.eventLoop.assertInEventLoop()
guard self.isOpen else {
promise?.fail(error: ChannelError.ioOnClosedChannel)
promise?.fail(ChannelError.ioOnClosedChannel)
return
}
guard !self.lifecycleManager.isPreRegistered else {
promise?.fail(error: ChannelError.inappropriateOperationForState)
promise?.fail(ChannelError.inappropriateOperationForState)
return
}
@ -785,7 +785,7 @@ class BaseSocketChannel<T: BaseSocket>: SelectableChannel, ChannelCore {
// `close0`'s error is about the result of the `close` operation, ...
self.close0(error: error, mode: .all, promise: nil)
// ... therefore we need to fail the registration `promise` separately.
promise?.fail(error: error)
promise?.fail(error)
return
}
@ -816,7 +816,7 @@ class BaseSocketChannel<T: BaseSocket>: SelectableChannel, ChannelCore {
}
public final func triggerUserOutboundEvent0(_ event: Any, promise: EventLoopPromise<Void>?) {
promise?.succeed(result: ())
promise?.succeed(())
}
// Methods invoked from the EventLoop itself
@ -1033,17 +1033,17 @@ class BaseSocketChannel<T: BaseSocket>: SelectableChannel, ChannelCore {
self.eventLoop.assertInEventLoop()
guard self.isOpen else {
promise?.fail(error: ChannelError.ioOnClosedChannel)
promise?.fail(ChannelError.ioOnClosedChannel)
return
}
guard pendingConnect == nil else {
promise?.fail(error: ChannelError.connectPending)
promise?.fail(ChannelError.connectPending)
return
}
guard self.lifecycleManager.isPreRegistered else {
promise?.fail(error: ChannelError.inappropriateOperationForState)
promise?.fail(ChannelError.inappropriateOperationForState)
return
}

View File

@ -193,13 +193,13 @@ public extension BlockingIOThreadPool {
let promise = eventLoop.makePromise(of: T.self)
self.submit { shouldRun in
guard case shouldRun = BlockingIOThreadPool.WorkItemState.active else {
promise.fail(error: ChannelError.ioOnClosedChannel)
promise.fail(ChannelError.ioOnClosedChannel)
return
}
do {
try promise.succeed(result: body())
try promise.succeed(body())
} catch {
promise.fail(error: error)
promise.fail(error)
}
}
return promise.futureResult

View File

@ -183,7 +183,7 @@ public final class ServerBootstrap {
do {
address = try makeSocketAddress()
} catch {
return group.next().makeFailedFuture(error: error)
return group.next().makeFailedFuture(error)
}
func makeChannel(_ eventLoop: SelectableEventLoop, _ childEventLoopGroup: EventLoopGroup) throws -> ServerSocketChannel {
return try ServerSocketChannel(eventLoop: eventLoop,
@ -202,7 +202,7 @@ public final class ServerBootstrap {
let eventLoop = self.group.next()
let childEventLoopGroup = self.childGroup
let serverChannelOptions = self.serverChannelOptions
let serverChannelInit = self.serverChannelInit ?? { _ in eventLoop.makeSucceededFuture(result: ()) }
let serverChannelInit = self.serverChannelInit ?? { _ in eventLoop.makeSucceededFuture(()) }
let childChannelInit = self.childChannelInit
let childChannelOptions = self.childChannelOptions
@ -210,7 +210,7 @@ public final class ServerBootstrap {
do {
serverChannel = try makeServerChannel(eventLoop as! SelectableEventLoop, childEventLoopGroup)
} catch {
return eventLoop.makeFailedFuture(error: error)
return eventLoop.makeFailedFuture(error)
}
return eventLoop.submit {
@ -225,7 +225,7 @@ public final class ServerBootstrap {
serverChannel as Channel
}.flatMapError { error in
serverChannel.close0(error: error, mode: .all, promise: nil)
return eventLoop.makeFailedFuture(error: error)
return eventLoop.makeFailedFuture(error)
}
}.flatMap {
$0
@ -254,7 +254,7 @@ public final class ServerBootstrap {
let accepted = self.unwrapInboundIn(data)
let ctxEventLoop = ctx.eventLoop
let childEventLoop = accepted.eventLoop
let childChannelInit = self.childChannelInit ?? { (_: Channel) in childEventLoop.makeSucceededFuture(result: ()) }
let childChannelInit = self.childChannelInit ?? { (_: Channel) in childEventLoop.makeSucceededFuture(()) }
@inline(__always)
func setupChildChannel() -> EventLoopFuture<Void> {
@ -270,10 +270,10 @@ public final class ServerBootstrap {
future.flatMap { (_) -> EventLoopFuture<Void> in
ctxEventLoop.assertInEventLoop()
guard !ctx.pipeline.destroyed else {
return ctx.eventLoop.makeFailedFuture(error: ChannelError.ioOnClosedChannel)
return ctx.eventLoop.makeFailedFuture(ChannelError.ioOnClosedChannel)
}
ctx.fireChannelRead(data)
return ctx.eventLoop.makeSucceededFuture(result: ())
return ctx.eventLoop.makeSucceededFuture(())
}.whenFailure { error in
ctxEventLoop.assertInEventLoop()
self.closeAndFire(ctx: ctx, accepted: accepted, err: error)
@ -421,7 +421,7 @@ public final class ClientBootstrap {
host: host,
port: port,
connectTimeout: self.connectTimeout) { eventLoop, protocolFamily in
return self.execute(eventLoop: eventLoop, protocolFamily: protocolFamily) { $0.eventLoop.makeSucceededFuture(result: ()) }
return self.execute(eventLoop: eventLoop, protocolFamily: protocolFamily) { $0.eventLoop.makeSucceededFuture(()) }
}
return connector.resolveAndConnect()
}
@ -436,7 +436,7 @@ public final class ClientBootstrap {
let connectPromise = channel.eventLoop.makePromise(of: Void.self)
channel.connect(to: address, promise: connectPromise)
let cancelTask = channel.eventLoop.scheduleTask(in: self.connectTimeout) {
connectPromise.fail(error: ChannelError.connectTimeout(self.connectTimeout))
connectPromise.fail(ChannelError.connectTimeout(self.connectTimeout))
channel.close(promise: nil)
}
@ -457,7 +457,7 @@ public final class ClientBootstrap {
let address = try SocketAddress(unixDomainSocketPath: unixDomainSocketPath)
return connect(to: address)
} catch {
return group.next().makeFailedFuture(error: error)
return group.next().makeFailedFuture(error)
}
}
@ -468,12 +468,12 @@ public final class ClientBootstrap {
/// - returns: an `EventLoopFuture<Channel>` to deliver the `Channel` immediately.
public func withConnectedSocket(descriptor: CInt) -> EventLoopFuture<Channel> {
let eventLoop = group.next()
let channelInitializer = self.channelInitializer ?? { _ in eventLoop.makeSucceededFuture(result: ()) }
let channelInitializer = self.channelInitializer ?? { _ in eventLoop.makeSucceededFuture(()) }
let channel: SocketChannel
do {
channel = try SocketChannel(eventLoop: eventLoop as! SelectableEventLoop, descriptor: descriptor)
} catch {
return eventLoop.makeFailedFuture(error: error)
return eventLoop.makeFailedFuture(error)
}
return channelInitializer(channel).flatMap {
@ -486,14 +486,14 @@ public final class ClientBootstrap {
channel
}.flatMapError { error in
channel.close0(error: error, mode: .all, promise: nil)
return channel.eventLoop.makeFailedFuture(error: error)
return channel.eventLoop.makeFailedFuture(error)
}
}
private func execute(eventLoop: EventLoop,
protocolFamily: Int32,
_ body: @escaping (Channel) -> EventLoopFuture<Void>) -> EventLoopFuture<Channel> {
let channelInitializer = self.channelInitializer ?? { _ in eventLoop.makeSucceededFuture(result: ()) }
let channelInitializer = self.channelInitializer ?? { _ in eventLoop.makeSucceededFuture(()) }
let channelOptions = self.channelOptions
let promise = eventLoop.makePromise(of: Channel.self)
@ -501,7 +501,7 @@ public final class ClientBootstrap {
do {
channel = try SocketChannel(eventLoop: eventLoop as! SelectableEventLoop, protocolFamily: protocolFamily)
} catch let err {
promise.fail(error: err)
promise.fail(err)
return promise.futureResult
}
@ -516,7 +516,7 @@ public final class ClientBootstrap {
channel
}.flatMapError { error in
channel.close0(error: error, mode: .all, promise: nil)
return channel.eventLoop.makeFailedFuture(error: error)
return channel.eventLoop.makeFailedFuture(error)
}.cascade(promise: promise)
return promise.futureResult
}
@ -635,7 +635,7 @@ public final class DatagramBootstrap {
do {
address = try makeSocketAddress()
} catch {
return group.next().makeFailedFuture(error: error)
return group.next().makeFailedFuture(error)
}
func makeChannel(_ eventLoop: SelectableEventLoop) throws -> DatagramChannel {
return try DatagramChannel(eventLoop: eventLoop,
@ -650,14 +650,14 @@ public final class DatagramBootstrap {
private func bind0(makeChannel: (_ eventLoop: SelectableEventLoop) throws -> DatagramChannel, _ registerAndBind: @escaping (EventLoop, DatagramChannel) -> EventLoopFuture<Void>) -> EventLoopFuture<Channel> {
let eventLoop = self.group.next()
let channelInitializer = self.channelInitializer ?? { _ in eventLoop.makeSucceededFuture(result: ()) }
let channelInitializer = self.channelInitializer ?? { _ in eventLoop.makeSucceededFuture(()) }
let channelOptions = self.channelOptions
let channel: DatagramChannel
do {
channel = try makeChannel(eventLoop as! SelectableEventLoop)
} catch {
return eventLoop.makeFailedFuture(error: error)
return eventLoop.makeFailedFuture(error)
}
return channelInitializer(channel).flatMap {
@ -667,7 +667,7 @@ public final class DatagramBootstrap {
}.map {
channel
}.flatMapError { error in
eventLoop.makeFailedFuture(error: error)
eventLoop.makeFailedFuture(error)
}
}
}
@ -723,7 +723,7 @@ public final class DatagramBootstrap {
func applyNext() {
guard let (key, (value, applier)) = it.next() else {
// If we reached the end, everything is applied.
applyPromise.succeed(result: ())
applyPromise.succeed(())
return
}

View File

@ -211,7 +211,7 @@ extension Channel {
}
public func registerAlreadyConfigured0(promise: EventLoopPromise<Void>?) {
promise?.fail(error: ChannelError.operationUnsupported)
promise?.fail(ChannelError.operationUnsupported)
}
public func triggerUserOutboundEvent(_ event: Any, promise: EventLoopPromise<Void>?) {

View File

@ -167,7 +167,7 @@ public final class ChannelPipeline: ChannelInvoker {
func _add() {
if self.destroyed {
promise.fail(error: ChannelError.ioOnClosedChannel)
promise.fail(ChannelError.ioOnClosedChannel)
return
}
@ -259,12 +259,12 @@ public final class ChannelPipeline: ChannelInvoker {
promise: EventLoopPromise<Void>) {
self.eventLoop.assertInEventLoop()
if self.destroyed {
promise.fail(error: ChannelError.ioOnClosedChannel)
promise.fail(ChannelError.ioOnClosedChannel)
return
}
guard let ctx = self.contextForPredicate0({ $0.handler === relativeHandler }) else {
promise.fail(error: ChannelPipelineError.notFound)
promise.fail(ChannelPipelineError.notFound)
return
}
@ -296,7 +296,7 @@ public final class ChannelPipeline: ChannelInvoker {
self.eventLoop.assertInEventLoop()
if destroyed {
promise.fail(error: ChannelError.ioOnClosedChannel)
promise.fail(ChannelError.ioOnClosedChannel)
return
}
@ -305,10 +305,10 @@ public final class ChannelPipeline: ChannelInvoker {
do {
try ctx.invokeHandlerAdded()
promise.succeed(result: ())
promise.succeed(())
} catch let err {
remove0(ctx: ctx, promise: nil)
promise.fail(error: err)
promise.fail(err)
}
}
@ -464,9 +464,9 @@ public final class ChannelPipeline: ChannelInvoker {
func _context0() {
if let ctx = self.contextForPredicate0(body) {
promise.succeed(result: ctx)
promise.succeed(ctx)
} else {
promise.fail(error: ChannelPipelineError.notFound)
promise.fail(ChannelPipelineError.notFound)
}
}
@ -514,9 +514,9 @@ public final class ChannelPipeline: ChannelInvoker {
do {
try ctx.invokeHandlerRemoved()
promise?.succeed(result: true)
promise?.succeed(true)
} catch let err {
promise?.fail(error: err)
promise?.fail(err)
}
// We need to keep the current node alive until after the callout in case the user uses the context.
@ -748,7 +748,7 @@ public final class ChannelPipeline: ChannelInvoker {
if let firstOutboundCtx = firstOutboundCtx {
firstOutboundCtx.invokeClose(mode: mode, promise: promise)
} else {
promise?.fail(error: ChannelError.alreadyClosed)
promise?.fail(ChannelError.alreadyClosed)
}
}
@ -768,7 +768,7 @@ public final class ChannelPipeline: ChannelInvoker {
if let firstOutboundCtx = firstOutboundCtx {
firstOutboundCtx.invokeWrite(data, promise: promise)
} else {
promise?.fail(error: ChannelError.ioOnClosedChannel)
promise?.fail(ChannelError.ioOnClosedChannel)
}
}
@ -776,7 +776,7 @@ public final class ChannelPipeline: ChannelInvoker {
if let firstOutboundCtx = firstOutboundCtx {
firstOutboundCtx.invokeWriteAndFlush(data, promise: promise)
} else {
promise?.fail(error: ChannelError.ioOnClosedChannel)
promise?.fail(ChannelError.ioOnClosedChannel)
}
}
@ -784,7 +784,7 @@ public final class ChannelPipeline: ChannelInvoker {
if let firstOutboundCtx = firstOutboundCtx {
firstOutboundCtx.invokeBind(to: address, promise: promise)
} else {
promise?.fail(error: ChannelError.ioOnClosedChannel)
promise?.fail(ChannelError.ioOnClosedChannel)
}
}
@ -792,7 +792,7 @@ public final class ChannelPipeline: ChannelInvoker {
if let firstOutboundCtx = firstOutboundCtx {
firstOutboundCtx.invokeConnect(to: address, promise: promise)
} else {
promise?.fail(error: ChannelError.ioOnClosedChannel)
promise?.fail(ChannelError.ioOnClosedChannel)
}
}
@ -800,7 +800,7 @@ public final class ChannelPipeline: ChannelInvoker {
if let firstOutboundCtx = firstOutboundCtx {
firstOutboundCtx.invokeRegister(promise: promise)
} else {
promise?.fail(error: ChannelError.ioOnClosedChannel)
promise?.fail(ChannelError.ioOnClosedChannel)
}
}
@ -808,7 +808,7 @@ public final class ChannelPipeline: ChannelInvoker {
if let firstOutboundCtx = firstOutboundCtx {
firstOutboundCtx.invokeTriggerUserOutboundEvent(event, promise: promise)
} else {
promise?.fail(error: ChannelError.ioOnClosedChannel)
promise?.fail(ChannelError.ioOnClosedChannel)
}
}
@ -1160,7 +1160,7 @@ public final class ChannelHandlerContext: ChannelInvoker {
if let outboundNext = self.prev {
outboundNext.invokeRegister(promise: promise)
} else {
promise?.fail(error: ChannelError.ioOnClosedChannel)
promise?.fail(ChannelError.ioOnClosedChannel)
}
}
@ -1174,7 +1174,7 @@ public final class ChannelHandlerContext: ChannelInvoker {
if let outboundNext = self.prev {
outboundNext.invokeBind(to: address, promise: promise)
} else {
promise?.fail(error: ChannelError.ioOnClosedChannel)
promise?.fail(ChannelError.ioOnClosedChannel)
}
}
@ -1188,7 +1188,7 @@ public final class ChannelHandlerContext: ChannelInvoker {
if let outboundNext = self.prev {
outboundNext.invokeConnect(to: address, promise: promise)
} else {
promise?.fail(error: ChannelError.ioOnClosedChannel)
promise?.fail(ChannelError.ioOnClosedChannel)
}
}
@ -1203,7 +1203,7 @@ public final class ChannelHandlerContext: ChannelInvoker {
if let outboundNext = self.prev {
outboundNext.invokeWrite(data, promise: promise)
} else {
promise?.fail(error: ChannelError.ioOnClosedChannel)
promise?.fail(ChannelError.ioOnClosedChannel)
}
}
@ -1230,7 +1230,7 @@ public final class ChannelHandlerContext: ChannelInvoker {
if let outboundNext = self.prev {
outboundNext.invokeWriteAndFlush(data, promise: promise)
} else {
promise?.fail(error: ChannelError.ioOnClosedChannel)
promise?.fail(ChannelError.ioOnClosedChannel)
}
}
@ -1254,7 +1254,7 @@ public final class ChannelHandlerContext: ChannelInvoker {
if let outboundNext = self.prev {
outboundNext.invokeClose(mode: mode, promise: promise)
} else {
promise?.fail(error: ChannelError.alreadyClosed)
promise?.fail(ChannelError.alreadyClosed)
}
}
@ -1267,7 +1267,7 @@ public final class ChannelHandlerContext: ChannelInvoker {
if let outboundNext = self.prev {
outboundNext.invokeTriggerUserOutboundEvent(event, promise: promise)
} else {
promise?.fail(error: ChannelError.ioOnClosedChannel)
promise?.fail(ChannelError.ioOnClosedChannel)
}
}

View File

@ -420,7 +420,7 @@ extension MessageToByteEncoder {
try encode(ctx: ctx, data: data, out: &buffer)
ctx.write(self.wrapOutboundOut(buffer), promise: promise)
} catch let err {
promise?.fail(error: err)
promise?.fail(err)
}
}

View File

@ -25,23 +25,23 @@ private final class DeadChannelCore: ChannelCore {
}
func register0(promise: EventLoopPromise<Void>?) {
promise?.fail(error: ChannelError.ioOnClosedChannel)
promise?.fail(ChannelError.ioOnClosedChannel)
}
func registerAlreadyConfigured0(promise: EventLoopPromise<Void>?) {
promise?.fail(error: ChannelError.ioOnClosedChannel)
promise?.fail(ChannelError.ioOnClosedChannel)
}
func bind0(to: SocketAddress, promise: EventLoopPromise<Void>?) {
promise?.fail(error: ChannelError.ioOnClosedChannel)
promise?.fail(ChannelError.ioOnClosedChannel)
}
func connect0(to: SocketAddress, promise: EventLoopPromise<Void>?) {
promise?.fail(error: ChannelError.ioOnClosedChannel)
promise?.fail(ChannelError.ioOnClosedChannel)
}
func write0(_ data: NIOAny, promise: EventLoopPromise<Void>?) {
promise?.fail(error: ChannelError.ioOnClosedChannel)
promise?.fail(ChannelError.ioOnClosedChannel)
}
func flush0() {
@ -51,11 +51,11 @@ private final class DeadChannelCore: ChannelCore {
}
func close0(error: Error, mode: CloseMode, promise: EventLoopPromise<Void>?) {
promise?.fail(error: ChannelError.alreadyClosed)
promise?.fail(ChannelError.alreadyClosed)
}
func triggerUserOutboundEvent0(_ event: Any, promise: EventLoopPromise<Void>?) {
promise?.fail(error: ChannelError.ioOnClosedChannel)
promise?.fail(ChannelError.ioOnClosedChannel)
}
func channelRead0(_ data: NIOAny) {
@ -80,7 +80,7 @@ internal final class DeadChannel: Channel {
let pipeline: ChannelPipeline
public var closeFuture: EventLoopFuture<Void> {
return self.eventLoop.makeSucceededFuture(result: ())
return self.eventLoop.makeSucceededFuture(())
}
internal init(pipeline: ChannelPipeline) {
@ -108,7 +108,7 @@ internal final class DeadChannel: Channel {
}
func getOption<T>(option: T) -> EventLoopFuture<T.OptionType> where T: ChannelOption {
return eventLoop.makeFailedFuture(error: ChannelError.ioOnClosedChannel)
return eventLoop.makeFailedFuture(ChannelError.ioOnClosedChannel)
}
let isWritable = false

View File

@ -64,9 +64,9 @@ public class EmbeddedEventLoop: EventLoop {
let readyTime = now + UInt64(`in`.nanoseconds)
let task = EmbeddedScheduledTask(readyTime: readyTime) {
do {
promise.succeed(result: try task())
promise.succeed(try task())
} catch let err {
promise.fail(error: err)
promise.fail(err)
}
}
@ -155,7 +155,7 @@ class EmbeddedChannelCore: ChannelCore {
deinit {
assert(self.pipeline.destroyed, "leaked an open EmbeddedChannel, maybe forgot to call channel.finish()?")
isOpen = false
closePromise.succeed(result: ())
closePromise.succeed(())
}
/// Contains the flushed items that went into the `Channel` (and on a regular channel would have hit the network).
@ -178,12 +178,12 @@ class EmbeddedChannelCore: ChannelCore {
func close0(error: Error, mode: CloseMode, promise: EventLoopPromise<Void>?) {
guard self.isOpen else {
promise?.fail(error: ChannelError.alreadyClosed)
promise?.fail(ChannelError.alreadyClosed)
return
}
isOpen = false
isActive = false
promise?.succeed(result: ())
promise?.succeed(())
// As we called register() in the constructor of EmbeddedChannel we also need to ensure we call unregistered here.
pipeline.fireChannelInactive0()
@ -192,22 +192,22 @@ class EmbeddedChannelCore: ChannelCore {
eventLoop.execute {
// ensure this is executed in a delayed fashion as the users code may still traverse the pipeline
self.pipeline.removeHandlers()
self.closePromise.succeed(result: ())
self.closePromise.succeed(())
}
}
func bind0(to address: SocketAddress, promise: EventLoopPromise<Void>?) {
promise?.succeed(result: ())
promise?.succeed(())
}
func connect0(to address: SocketAddress, promise: EventLoopPromise<Void>?) {
isActive = true
promise?.succeed(result: ())
promise?.succeed(())
pipeline.fireChannelActive0()
}
func register0(promise: EventLoopPromise<Void>?) {
promise?.succeed(result: ())
promise?.succeed(())
pipeline.fireChannelRegistered0()
}
@ -219,7 +219,7 @@ class EmbeddedChannelCore: ChannelCore {
func write0(_ data: NIOAny, promise: EventLoopPromise<Void>?) {
guard let data = data.tryAsIOData() else {
promise?.fail(error: ChannelError.writeDataUnsupported)
promise?.fail(ChannelError.writeDataUnsupported)
return
}
@ -231,7 +231,7 @@ class EmbeddedChannelCore: ChannelCore {
self.pendingOutboundBuffer.removeAll()
for dataAndPromise in pendings {
self.addToBuffer(buffer: &self.outboundBuffer, data: dataAndPromise.0)
dataAndPromise.1?.succeed(result: ())
dataAndPromise.1?.succeed(())
}
}
@ -240,7 +240,7 @@ class EmbeddedChannelCore: ChannelCore {
}
public final func triggerUserOutboundEvent0(_ event: Any, promise: EventLoopPromise<Void>?) {
promise?.succeed(result: ())
promise?.succeed(())
}
func channelRead0(_ data: NIOAny) {
@ -400,7 +400,7 @@ public class EmbeddedChannel: Channel {
public func getOption<T>(option: T) -> EventLoopFuture<T.OptionType> where T: ChannelOption {
if option is AutoReadOption {
return self.eventLoop.makeSucceededFuture(result: true as! T.OptionType)
return self.eventLoop.makeSucceededFuture(true as! T.OptionType)
}
fatalError("option \(option) not supported")
}

View File

@ -41,7 +41,7 @@ public struct Scheduled<T> {
/// Whether this is successful depends on whether the execution of the task already begun.
/// This means that cancellation is not guaranteed.
public func cancel() {
promise.fail(error: EventLoopError.cancelled)
promise.fail(EventLoopError.cancelled)
}
/// Returns the `EventLoopFuture` which will be notified once the execution of the scheduled task completes.
@ -134,7 +134,7 @@ public final class RepeatedTask {
self.scheduled = self.eventLoop.scheduleTask(in: self.delay) {
// we need to repeat this as we might have been cancelled in the meantime
guard let task = self.task else {
return self.eventLoop.makeSucceededFuture(result: ())
return self.eventLoop.makeSucceededFuture(())
}
return task(self)
}
@ -297,9 +297,9 @@ extension EventLoop {
self.execute {
do {
promise.succeed(result: try task())
promise.succeed(try task())
} catch let err {
promise.fail(error: err)
promise.fail(err)
}
}
@ -316,7 +316,7 @@ extension EventLoop {
/// - parameters:
/// - error: the `Error` that is used by the `EventLoopFuture`.
/// - returns: a failed `EventLoopFuture`.
public func makeFailedFuture<T>(error: Error) -> EventLoopFuture<T> {
public func makeFailedFuture<T>(_ error: Error) -> EventLoopFuture<T> {
return EventLoopFuture<T>(eventLoop: self, error: error, file: "n/a", line: 0)
}
@ -325,7 +325,7 @@ extension EventLoop {
/// - parameters:
/// - result: the value that is used by the `EventLoopFuture`.
/// - returns: a succeeded `EventLoopFuture`.
public func makeSucceededFuture<Success>(result: Success) -> EventLoopFuture<Success> {
public func makeSucceededFuture<Success>(_ result: Success) -> EventLoopFuture<Success> {
return EventLoopFuture<Success>(eventLoop: self, result: result, file: "n/a", line: 0)
}
@ -349,9 +349,9 @@ extension EventLoop {
let futureTask: (RepeatedTask) -> EventLoopFuture<Void> = { repeatedTask in
do {
try task(repeatedTask)
return self.makeSucceededFuture(result: ())
return self.makeSucceededFuture(())
} catch {
return self.makeFailedFuture(error: error)
return self.makeFailedFuture(error)
}
}
return self.scheduleRepeatedTask(initialDelay: initialDelay, delay: delay, futureTask)
@ -395,6 +395,20 @@ extension EventLoop {
}
}
// to be removed before 2.0
extension EventLoop {
@available(*, deprecated, renamed: "makeFailedFuture(_:)")
public func makeFailedFuture<T>(error: Error) -> EventLoopFuture<T> {
return self.makeFailedFuture(error)
}
@available(*, deprecated, renamed: "makeSucceededFuture(_:)")
public func makeSucceededFuture<Success>(result: Success) -> EventLoopFuture<Success> {
return self.makeSucceededFuture(result)
}
}
/// Internal representation of a `Registration` to an `Selector`.
///
/// Whenever a `Selectable` is registered to a `Selector` a `Registration` is created internally that is also provided within the
@ -559,12 +573,12 @@ internal final class SelectableEventLoop: EventLoop {
let promise: EventLoopPromise<T> = makePromise()
let task = ScheduledTask({
do {
promise.succeed(result: try task())
promise.succeed(try task())
} catch let err {
promise.fail(error: err)
promise.fail(err)
}
}, { error in
promise.fail(error: error)
promise.fail(error)
},`in`)
let scheduled = Scheduled(promise: promise, cancellationTask: {
@ -658,7 +672,7 @@ internal final class SelectableEventLoop: EventLoop {
// Fail all the scheduled tasks.
for task in scheduledTasksCopy {
task.fail(error: EventLoopError.shutdown)
task.fail(EventLoopError.shutdown)
}
}
var nextReadyTask: ScheduledTask? = nil
@ -737,7 +751,7 @@ internal final class SelectableEventLoop: EventLoop {
public func closeGently() -> EventLoopFuture<Void> {
func closeGently0() -> EventLoopFuture<Void> {
guard self.lifecycleState == .open else {
return self.makeFailedFuture(error: EventLoopError.shutdown)
return self.makeFailedFuture(EventLoopError.shutdown)
}
self.lifecycleState = .closing
return self.selector.closeGently(eventLoop: self)
@ -990,7 +1004,7 @@ private final class ScheduledTask {
return .nanoseconds(readyTime - TimeAmount.Value(t.uptimeNanoseconds))
}
func fail(error: Error) {
func fail(_ error: Error) {
failFn(error)
}
}

View File

@ -118,9 +118,9 @@ private struct CallbackList: ExpressibleByArrayLiteral {
/// let promise = eventLoop.makePromise(of: ResultType.self)
/// someAsyncOperationWithACallback(args) { result -> Void in
/// // when finished...
/// promise.succeed(result: result)
/// promise.succeed(result)
/// // if error...
/// promise.fail(error: error)
/// promise.fail(error)
/// }
/// return promise.futureResult
/// }
@ -159,7 +159,7 @@ public struct EventLoopPromise<Value> {
///
/// - parameters:
/// - result: The successful result of the operation.
public func succeed(result: Value) {
public func succeed(_ result: Value) {
_resolve(value: .success(result))
}
@ -167,7 +167,7 @@ public struct EventLoopPromise<Value> {
///
/// - parameters:
/// - error: The error from the operation.
public func fail(error: Error) {
public func fail(_ error: Error) {
_resolve(value: .failure(error))
}
@ -726,10 +726,10 @@ extension EventLoopFuture {
/// Return a new EventLoopFuture that contains this "and" another value.
/// This is just syntactic sugar for `future.and(loop.newSucceedFuture<NewValue>(result: result))`.
public func and<OtherValue>(result: OtherValue,
public func and<OtherValue>(value: OtherValue,
file: StaticString = #file,
line: UInt = #line) -> EventLoopFuture<(Value, OtherValue)> {
return and(EventLoopFuture<OtherValue>(eventLoop: self.eventLoop, result: result, file: file, line: line))
return and(EventLoopFuture<OtherValue>(eventLoop: self.eventLoop, result: value, file: file, line: line))
}
}
@ -760,9 +760,9 @@ extension EventLoopFuture {
_whenCompleteWithValue { v in
switch v {
case .failure(let err):
promise.fail(error: err)
promise.fail(err)
case .success(let value):
promise.succeed(result: value)
promise.succeed(value)
}
}
}
@ -779,7 +779,7 @@ extension EventLoopFuture {
public func cascadeFailure<NewValue>(promise: EventLoopPromise<NewValue>?) {
guard let promise = promise else { return }
self.whenFailure { err in
promise.fail(error: err)
promise.fail(err)
}
}
}
@ -905,10 +905,10 @@ extension EventLoopFuture {
_ futures: [EventLoopFuture<InputValue>],
eventLoop: EventLoop,
_ nextPartialResult: @escaping (Value, InputValue) -> Value) -> EventLoopFuture<Value> {
let f0 = eventLoop.makeSucceededFuture(result: initialResult)
let f0 = eventLoop.makeSucceededFuture(initialResult)
let body = f0.fold(futures) { (t: Value, u: InputValue) -> EventLoopFuture<Value> in
eventLoop.makeSucceededFuture(result: nextPartialResult(t, u))
eventLoop.makeSucceededFuture(nextPartialResult(t, u))
}
return body
@ -938,20 +938,20 @@ extension EventLoopFuture {
let p0 = eventLoop.makePromise(of: Value.self)
var result: Value = initialResult
let f0 = eventLoop.makeSucceededFuture(result: ())
let f0 = eventLoop.makeSucceededFuture(())
let future = f0.fold(futures) { (_: (), value: InputValue) -> EventLoopFuture<Void> in
eventLoop.assertInEventLoop()
updateAccumulatingResult(&result, value)
return eventLoop.makeSucceededFuture(result: ())
return eventLoop.makeSucceededFuture(())
}
future.whenSuccess {
eventLoop.assertInEventLoop()
p0.succeed(result: result)
p0.succeed(result)
}
future.whenFailure { (error) in
eventLoop.assertInEventLoop()
p0.fail(error: error)
p0.fail(error)
}
return p0.futureResult
}
@ -984,8 +984,8 @@ public extension EventLoopFuture {
func executeAndComplete<Value>(_ promise: EventLoopPromise<Value>?, _ body: () throws -> Value) {
do {
let result = try body()
promise?.succeed(result: result)
promise?.succeed(result)
} catch let e {
promise?.fail(error: e)
promise?.fail(e)
}
}

View File

@ -91,7 +91,7 @@ internal class GetaddrinfoResolver: Resolver {
hint.ai_socktype = self.aiSocktype
hint.ai_protocol = self.aiProtocol
guard getaddrinfo(host, String(port), &hint, &info) == 0 else {
self.fail(error: SocketAddressError.unknown(host: host, port: port))
self.fail(SocketAddressError.unknown(host: host, port: port))
return
}
@ -100,7 +100,7 @@ internal class GetaddrinfoResolver: Resolver {
freeaddrinfo(info)
} else {
/* this is odd, getaddrinfo returned NULL */
self.fail(error: SocketAddressError.unsupported)
self.fail(SocketAddressError.unsupported)
}
}
@ -125,7 +125,7 @@ internal class GetaddrinfoResolver: Resolver {
v6Results.append(.init(ptr.pointee, host: host))
}
default:
self.fail(error: SocketAddressError.unsupported)
self.fail(SocketAddressError.unsupported)
return
}
@ -136,16 +136,16 @@ internal class GetaddrinfoResolver: Resolver {
info = nextInfo
}
v6Future.succeed(result: v6Results)
v4Future.succeed(result: v4Results)
v6Future.succeed(v6Results)
v4Future.succeed(v4Results)
}
/// Record an error and fail the lookup process.
///
/// - parameters:
/// - error: The error encountered during lookup.
private func fail(error: Error) {
self.v6Future.fail(error: error)
self.v4Future.fail(error: error)
private func fail(_ error: Error) {
self.v6Future.fail(error)
self.v4Future.fail(error)
}
}

View File

@ -507,7 +507,7 @@ internal class HappyEyeballsConnector {
/// Cleans up internal state and fails the connection promise.
private func timedOut() {
cleanUp()
self.resolutionPromise.fail(error: ChannelError.connectTimeout(self.connectTimeout))
self.resolutionPromise.fail(ChannelError.connectTimeout(self.connectTimeout))
}
/// Called when we've attempted to connect to all our resolved targets,
@ -518,7 +518,7 @@ internal class HappyEyeballsConnector {
private func failed() {
precondition(pendingConnections.count == 0, "failed with pending connections")
cleanUp()
self.resolutionPromise.fail(error: self.error)
self.resolutionPromise.fail(self.error)
}
/// Called to connect to a given target.
@ -547,7 +547,7 @@ internal class HappyEyeballsConnector {
channel.close(promise: nil)
} else {
self.processInput(.connectSuccess)
self.resolutionPromise.succeed(result: channel)
self.resolutionPromise.succeed(channel)
}
}.whenFailure { err in
// The connection attempt failed. If we're in the complete state then there's nothing

View File

@ -87,7 +87,7 @@ public struct NonBlockingFileIO {
eventLoop: eventLoop,
chunkHandler: chunkHandler)
} catch {
return eventLoop.makeFailedFuture(error: error)
return eventLoop.makeFailedFuture(error)
}
}
@ -131,7 +131,7 @@ public struct NonBlockingFileIO {
}
}
} else {
return eventLoop.makeSucceededFuture(result: ())
return eventLoop.makeSucceededFuture(())
}
}
@ -162,7 +162,7 @@ public struct NonBlockingFileIO {
allocator: allocator,
eventLoop: eventLoop)
} catch {
return eventLoop.makeFailedFuture(error: error)
return eventLoop.makeFailedFuture(error)
}
}
@ -182,7 +182,7 @@ public struct NonBlockingFileIO {
/// - returns: An `EventLoopFuture` which delivers a `ByteBuffer` if the read was successful or a failure on error.
public func read(fileHandle: FileHandle, byteCount: Int, allocator: ByteBufferAllocator, eventLoop: EventLoop) -> EventLoopFuture<ByteBuffer> {
guard byteCount > 0 else {
return eventLoop.makeSucceededFuture(result: allocator.buffer(capacity: 0))
return eventLoop.makeSucceededFuture(allocator.buffer(capacity: 0))
}
var buf = allocator.buffer(capacity: byteCount)
@ -227,7 +227,7 @@ public struct NonBlockingFileIO {
var byteCount = buffer.readableBytes
guard byteCount > 0 else {
return eventLoop.makeSucceededFuture(result: ())
return eventLoop.makeSucceededFuture(())
}
return self.threadPool.runIfActive(eventLoop: eventLoop) {

View File

@ -289,7 +289,7 @@ private struct PendingDatagramWritesState {
w.promise.map { promises.append($0) }
}
promises.forEach { $0.fail(error: error) }
promises.forEach { $0.fail(error) }
}
/// Returns the best mechanism to write pending data at the current point in time.
@ -528,9 +528,9 @@ final class PendingDatagramWritesManager: PendingWritesManager {
private func fulfillPromise(_ promise: PendingDatagramWritesState.DatagramWritePromiseFiller?) {
if let promise = promise, let error = promise.1 {
promise.0.fail(error: error)
promise.0.fail(error)
} else if let promise = promise {
promise.0.succeed(result: ())
promise.0.succeed(())
}
}

View File

@ -355,7 +355,7 @@ final class PendingStreamWritesManager: PendingWritesManager {
channelWritabilityFlag.store(true)
}
promise?.succeed(result: ())
promise?.succeed(())
return result
}
@ -416,7 +416,7 @@ final class PendingStreamWritesManager: PendingWritesManager {
self.isOpen = false
}
self.state.removeAll()?.fail(error: error)
self.state.removeAll()?.fail(error)
assert(self.state.isEmpty)
}

View File

@ -663,7 +663,7 @@ internal extension Selector where R == NIORegistration {
/// Gently close the `Selector` after all registered `Channel`s are closed.
func closeGently(eventLoop: EventLoop) -> EventLoopFuture<Void> {
guard self.lifecycleState == .open else {
return eventLoop.makeFailedFuture(error: IOError(errnoCode: EBADF, reason: "can't close selector gently as it's \(self.lifecycleState)."))
return eventLoop.makeFailedFuture(IOError(errnoCode: EBADF, reason: "can't close selector gently as it's \(self.lifecycleState)."))
}
let futures: [EventLoopFuture<Void>] = self.registrations.map { (_, reg: NIORegistration) -> EventLoopFuture<Void> in
@ -695,7 +695,7 @@ internal extension Selector where R == NIORegistration {
}
guard futures.count > 0 else {
return eventLoop.makeSucceededFuture(result: ())
return eventLoop.makeSucceededFuture(())
}
return EventLoopFuture<Void>.andAll(futures, eventLoop: eventLoop)

View File

@ -224,7 +224,7 @@ final class SocketChannel: BaseSocketChannel<Socket> {
switch mode {
case .output:
if outputShutdown {
promise?.fail(error: ChannelError.outputClosed)
promise?.fail(ChannelError.outputClosed)
return
}
try socket.shutdown(how: .WR)
@ -232,13 +232,13 @@ final class SocketChannel: BaseSocketChannel<Socket> {
// Fail all pending writes and so ensure all pending promises are notified
pendingWrites.failAll(error: error, close: false)
unregisterForWritable()
promise?.succeed(result: ())
promise?.succeed(())
pipeline.fireUserInboundEventTriggered(ChannelEvent.outputClosed)
case .input:
if inputShutdown {
promise?.fail(error: ChannelError.inputClosed)
promise?.fail(ChannelError.inputClosed)
return
}
switch error {
@ -251,7 +251,7 @@ final class SocketChannel: BaseSocketChannel<Socket> {
}
inputShutdown = true
unregisterForReadable()
promise?.succeed(result: ())
promise?.succeed(())
pipeline.fireUserInboundEventTriggered(ChannelEvent.inputClosed)
case .all:
@ -262,7 +262,7 @@ final class SocketChannel: BaseSocketChannel<Socket> {
super.close0(error: error, mode: mode, promise: promise)
}
} catch let err {
promise?.fail(error: err)
promise?.fail(err)
}
}
@ -292,12 +292,12 @@ final class SocketChannel: BaseSocketChannel<Socket> {
override func bufferPendingWrite(data: NIOAny, promise: EventLoopPromise<Void>?) {
if outputShutdown {
promise?.fail(error: ChannelError.outputClosed)
promise?.fail(ChannelError.outputClosed)
return
}
guard let data = data.tryAsIOData() else {
promise?.fail(error: ChannelError.writeDataUnsupported)
promise?.fail(ChannelError.writeDataUnsupported)
return
}
@ -372,12 +372,12 @@ final class ServerSocketChannel: BaseSocketChannel<ServerSocket> {
self.eventLoop.assertInEventLoop()
guard self.isOpen else {
promise?.fail(error: ChannelError.ioOnClosedChannel)
promise?.fail(ChannelError.ioOnClosedChannel)
return
}
guard self.isRegistered else {
promise?.fail(error: ChannelError.inappropriateOperationForState)
promise?.fail(ChannelError.inappropriateOperationForState)
return
}
@ -386,7 +386,7 @@ final class ServerSocketChannel: BaseSocketChannel<ServerSocket> {
// It's important to call the methods before we actually notify the original promise for ordering reasons.
self.becomeActive0(promise: promise)
}.whenFailure{ error in
promise?.fail(error: error)
promise?.fail(error)
}
executeAndComplete(p) {
try socket.bind(to: address)
@ -466,7 +466,7 @@ final class ServerSocketChannel: BaseSocketChannel<ServerSocket> {
}
override func bufferPendingWrite(data: NIOAny, promise: EventLoopPromise<Void>?) {
promise?.fail(error: ChannelError.operationUnsupported)
promise?.fail(ChannelError.operationUnsupported)
}
override func markFlushPoint() {
@ -648,7 +648,7 @@ final class DatagramChannel: BaseSocketChannel<Socket> {
/// Buffer a write in preparation for a flush.
override func bufferPendingWrite(data: NIOAny, promise: EventLoopPromise<Void>?) {
guard let data = data.tryAsByteEnvelope() else {
promise?.fail(error: ChannelError.writeDataUnsupported)
promise?.fail(ChannelError.writeDataUnsupported)
return
}
@ -698,7 +698,7 @@ final class DatagramChannel: BaseSocketChannel<Socket> {
override func bind0(to address: SocketAddress, promise: EventLoopPromise<Void>?) {
self.eventLoop.assertInEventLoop()
guard self.isRegistered else {
promise?.fail(error: ChannelError.inappropriateOperationForState)
promise?.fail(ChannelError.inappropriateOperationForState)
return
}
do {
@ -706,7 +706,7 @@ final class DatagramChannel: BaseSocketChannel<Socket> {
self.updateCachedAddressesFromSocket(updateRemote: false)
becomeActive0(promise: promise)
} catch let err {
promise?.fail(error: err)
promise?.fail(err)
}
}
}
@ -793,25 +793,25 @@ extension DatagramChannel: MulticastChannel {
self.eventLoop.assertInEventLoop()
guard self.isActive else {
promise?.fail(error: ChannelError.inappropriateOperationForState)
promise?.fail(ChannelError.inappropriateOperationForState)
return
}
// We need to check that we have the appropriate address types in all cases. They all need to overlap with
// the address type of this channel, or this cannot work.
guard let localAddress = self.localAddress else {
promise?.fail(error: ChannelError.unknownLocalAddress)
promise?.fail(ChannelError.unknownLocalAddress)
return
}
guard localAddress.protocolFamily == group.protocolFamily else {
promise?.fail(error: ChannelError.badMulticastGroupAddressFamily)
promise?.fail(ChannelError.badMulticastGroupAddressFamily)
return
}
// Ok, now we need to check that the group we've been asked to join is actually a multicast group.
guard group.isMulticast else {
promise?.fail(error: ChannelError.illegalMulticastAddress(group))
promise?.fail(ChannelError.illegalMulticastAddress(group))
return
}
@ -841,9 +841,9 @@ extension DatagramChannel: MulticastChannel {
throw ChannelError.badInterfaceAddressFamily
}
promise?.succeed(result: ())
promise?.succeed(())
} catch {
promise?.fail(error: error)
promise?.fail(error)
return
}
}

View File

@ -95,7 +95,7 @@ public final class HTTPResponseCompressor: ChannelDuplexHandler {
}
public func handlerRemoved(ctx: ChannelHandlerContext) {
pendingWritePromise?.fail(error: CompressionError.uncompressedWritesPending)
pendingWritePromise?.fail(CompressionError.uncompressedWritesPending)
if algorithm != nil {
deinitializeEncoder()
algorithm = nil
@ -238,7 +238,7 @@ public final class HTTPResponseCompressor: ChannelDuplexHandler {
// If we still have the pending promise, we never emitted a write. Fail the promise,
// as anything that is listening for its data somehow lost it.
if let stillPendingPromise = pendingPromise {
stillPendingPromise.fail(error: CompressionError.noDataToWrite)
stillPendingPromise.fail(CompressionError.noDataToWrite)
}
// Reset the pending promise.

View File

@ -239,14 +239,14 @@ public class HTTPServerUpgradeHandler: ChannelInboundHandler {
if let handler = handler {
return ctx.pipeline.remove(handler: handler)
} else {
return ctx.eventLoop.makeSucceededFuture(result: true)
return ctx.eventLoop.makeSucceededFuture(true)
}
}
/// Removes any extra HTTP-related handlers from the channel pipeline.
private func removeExtraHandlers(ctx: ChannelHandlerContext) -> EventLoopFuture<Void> {
guard self.extraHTTPHandlers.count > 0 else {
return ctx.eventLoop.makeSucceededFuture(result: ())
return ctx.eventLoop.makeSucceededFuture(())
}
return EventLoopFuture<Void>.andAll(self.extraHTTPHandlers.map { ctx.pipeline.remove(handler: $0).map { (_: Bool) in () }},

View File

@ -86,7 +86,7 @@ let datagramChannel = try datagramBootstrap
return channel.joinGroup(chatMulticastGroup, interface: targetInterface).map { channel }
}.flatMap { channel -> EventLoopFuture<Channel> in
guard let targetInterface = targetInterface else {
return channel.eventLoop.makeSucceededFuture(result: channel)
return channel.eventLoop.makeSucceededFuture(channel)
}
let provider = channel as! SocketOptionProvider

View File

@ -161,7 +161,7 @@ final class RepeatedRequests: ChannelInboundHandler {
func errorCaught(ctx: ChannelHandlerContext, error: Error) {
ctx.channel.close(promise: nil)
self.isDonePromise.fail(error: error)
self.isDonePromise.fail(error)
}
func channelRead(ctx: ChannelHandlerContext, data: NIOAny) {

View File

@ -82,14 +82,14 @@ extension EventLoop {
return self.makePromise(of: type, file: file, line: line)
}
@available(*, deprecated, renamed: "makeSucceededFuture")
@available(*, deprecated, renamed: "makeSucceededFuture(_:)")
public func newSucceededFuture<T>(result: T) -> EventLoopFuture<T> {
return self.makeSucceededFuture(result: result)
return self.makeSucceededFuture(result)
}
@available(*, deprecated, renamed: "makeFailedFuture")
@available(*, deprecated, renamed: "makeFailedFuture(_:)")
public func newFailedFuture<T>(error: Error) -> EventLoopFuture<T> {
return self.makeFailedFuture(error: error)
return self.makeFailedFuture(error)
}
}
@ -123,6 +123,25 @@ extension EventLoopFuture {
public func thenIfErrorThrowing(file: StaticString = #file, line: UInt = #line, _ callback: @escaping (Error) throws -> Value) -> EventLoopFuture<Value> {
return self.flatMapErrorThrowing(file: file, line: line, callback)
}
@available(*, deprecated, renamed: "and(value:file:line:)")
public func and<OtherValue>(result: OtherValue,
file: StaticString = #file,
line: UInt = #line) -> EventLoopFuture<(Value, OtherValue)> {
return self.and(value: result, file: file, line: line)
}
}
extension EventLoopPromise {
@available(*, deprecated, renamed: "succeed(_:)")
public func succeed(result: Value) {
self.succeed(result)
}
@available(*, deprecated, renamed: "fail(_:)")
public func fail(error: Error) {
self.fail(error)
}
}
extension EventLoopGroup {

View File

@ -133,7 +133,7 @@ class HTTPTest: XCTestCase {
let bd1 = try sendAndCheckRequests(expecteds, body: body, trailers: trailers, sendStrategy: { (reqString, chan) in
var buf = chan.allocator.buffer(capacity: 1024)
buf.write(string: reqString)
return chan.eventLoop.makeSucceededFuture(result: ()).flatMapThrowing {
return chan.eventLoop.makeSucceededFuture(()).flatMapThrowing {
try chan.writeInbound(buf)
}
})
@ -145,7 +145,7 @@ class HTTPTest: XCTestCase {
var buf = chan.allocator.buffer(capacity: 1024)
buf.write(string: "\(c)")
writeFutures.append(chan.eventLoop.makeSucceededFuture(result: ()).flatMapThrowing {
writeFutures.append(chan.eventLoop.makeSucceededFuture(()).flatMapThrowing {
try chan.writeInbound(buf)
})
}

View File

@ -81,7 +81,7 @@ private func serverHTTPChannelWithAutoremoval(group: EventLoopGroup,
let c = try ServerBootstrap(group: group)
.serverChannelOption(ChannelOptions.socket(SocketOptionLevel(SOL_SOCKET), SO_REUSEADDR), value: 1)
.childChannelInitializer { channel in
p.succeed(result: channel)
p.succeed(channel)
let upgradeConfig = (upgraders: upgraders, completionHandler: upgradeCompletionHandler)
return channel.pipeline.configureHTTPServerPipeline(withPipeliningAssistance: pipelining, withServerUpgrade: upgradeConfig).flatMap {
let futureResults = extraHandlers.map { channel.pipeline.add(handler: $0) }
@ -182,7 +182,7 @@ private class ExplodingUpgrader: HTTPProtocolUpgrader {
public func upgrade(ctx: ChannelHandlerContext, upgradeRequest: HTTPRequestHead) -> EventLoopFuture<Void> {
XCTFail("upgrade called")
return ctx.eventLoop.makeSucceededFuture(result: ())
return ctx.eventLoop.makeSucceededFuture(())
}
}
@ -204,7 +204,7 @@ private class UpgraderSaysNo: HTTPProtocolUpgrader {
public func upgrade(ctx: ChannelHandlerContext, upgradeRequest: HTTPRequestHead) -> EventLoopFuture<Void> {
XCTFail("upgrade called")
return ctx.eventLoop.makeSucceededFuture(result: ())
return ctx.eventLoop.makeSucceededFuture(())
}
}
@ -227,7 +227,7 @@ private class SuccessfulUpgrader: HTTPProtocolUpgrader {
public func upgrade(ctx: ChannelHandlerContext, upgradeRequest: HTTPRequestHead) -> EventLoopFuture<Void> {
self.onUpgradeComplete(upgradeRequest)
return ctx.eventLoop.makeSucceededFuture(result: ())
return ctx.eventLoop.makeSucceededFuture(())
}
}
@ -255,7 +255,7 @@ private class UpgradeDelayer: HTTPProtocolUpgrader {
}
public func unblockUpgrade() {
self.upgradePromise!.succeed(result: ())
self.upgradePromise!.succeed(())
}
}
@ -400,7 +400,7 @@ class HTTPUpgradeTestCase: XCTestCase {
assertResponseIs(response: resultString,
expectedResponseLine: "HTTP/1.1 101 Switching Protocols",
expectedResponseHeaders: ["X-Upgrade-Complete: true", "upgrade: myproto", "connection: upgrade"])
completePromise.succeed(result: ())
completePromise.succeed(())
}
XCTAssertNoThrow(try client.pipeline.add(handler: clientHandler).wait())
@ -505,7 +505,7 @@ class HTTPUpgradeTestCase: XCTestCase {
assertResponseIs(response: resultString,
expectedResponseLine: "HTTP/1.1 101 Switching Protocols",
expectedResponseHeaders: ["X-Upgrade-Complete: true", "upgrade: myproto", "connection: upgrade"])
completePromise.succeed(result: ())
completePromise.succeed(())
}
XCTAssertNoThrow(try client.pipeline.add(handler: clientHandler).wait())
@ -549,7 +549,7 @@ class HTTPUpgradeTestCase: XCTestCase {
assertResponseIs(response: resultString,
expectedResponseLine: "HTTP/1.1 101 Switching Protocols",
expectedResponseHeaders: ["X-Upgrade-Complete: true", "upgrade: myproto", "connection: upgrade"])
completePromise.succeed(result: ())
completePromise.succeed(())
}
XCTAssertNoThrow(try client.pipeline.add(handler: clientHandler).wait())
@ -610,7 +610,7 @@ class HTTPUpgradeTestCase: XCTestCase {
assertResponseIs(response: resultString,
expectedResponseLine: "HTTP/1.1 101 Switching Protocols",
expectedResponseHeaders: ["X-Upgrade-Complete: true", "upgrade: myproto", "connection: upgrade"])
completePromise.succeed(result: ())
completePromise.succeed(())
}
XCTAssertNoThrow(try client.pipeline.add(handler: clientHandler).wait())
@ -656,7 +656,7 @@ class HTTPUpgradeTestCase: XCTestCase {
assertResponseIs(response: resultString,
expectedResponseLine: "HTTP/1.1 101 Switching Protocols",
expectedResponseHeaders: ["X-Upgrade-Complete: true", "upgrade: myproto", "connection: upgrade"])
completePromise.succeed(result: ())
completePromise.succeed(())
}
XCTAssertNoThrow(try client.pipeline.add(handler: clientHandler).wait())
@ -690,7 +690,7 @@ class HTTPUpgradeTestCase: XCTestCase {
assertResponseIs(response: resultString,
expectedResponseLine: "HTTP/1.1 101 Switching Protocols",
expectedResponseHeaders: ["X-Upgrade-Complete: true", "upgrade: myproto", "connection: upgrade"])
completePromise.succeed(result: ())
completePromise.succeed(())
}
XCTAssertNoThrow(try client.pipeline.add(handler: clientHandler).wait())
@ -733,7 +733,7 @@ class HTTPUpgradeTestCase: XCTestCase {
assertResponseIs(response: resultString,
expectedResponseLine: "HTTP/1.1 101 Switching Protocols",
expectedResponseHeaders: ["X-Upgrade-Complete: true", "upgrade: myproto", "connection: upgrade"])
completePromise.succeed(result: ())
completePromise.succeed(())
}
XCTAssertNoThrow(try client.pipeline.add(handler: clientHandler).wait())
@ -839,18 +839,18 @@ class HTTPUpgradeTestCase: XCTestCase {
XCTAssertEqual("A", stringRead)
self.state = .inlineDataRead
if stringRead == .some("A") {
self.firstByteDonePromise.succeed(result: ())
self.firstByteDonePromise.succeed(())
} else {
self.firstByteDonePromise.fail(error: ReceivedTheWrongThingError.error)
self.firstByteDonePromise.fail(ReceivedTheWrongThingError.error)
}
case .inlineDataRead:
XCTAssertEqual("B", stringRead)
self.state = .extraDataRead
ctx.channel.close(promise: nil)
if stringRead == .some("B") {
self.secondByteDonePromise.succeed(result: ())
self.secondByteDonePromise.succeed(())
} else {
self.secondByteDonePromise.fail(error: ReceivedTheWrongThingError.error)
self.secondByteDonePromise.fail(ReceivedTheWrongThingError.error)
}
default:
XCTFail("channel read in wrong state \(self.state)")
@ -862,7 +862,7 @@ class HTTPUpgradeTestCase: XCTestCase {
self.state = .closed
ctx.close(mode: mode, promise: promise)
self.allDonePromise.succeed(result: ())
self.allDonePromise.succeed(())
}
}
@ -899,7 +899,7 @@ class HTTPUpgradeTestCase: XCTestCase {
assertResponseIs(response: resultString,
expectedResponseLine: "HTTP/1.1 101 Switching Protocols",
expectedResponseHeaders: ["X-Upgrade-Complete: true", "upgrade: myproto", "connection: upgrade"])
completePromise.succeed(result: ())
completePromise.succeed(())
}
XCTAssertNoThrow(try client.pipeline.add(handler: clientHandler).wait())

View File

@ -40,7 +40,7 @@ class ApplicationProtocolNegotiationHandlerTests: XCTestCase {
let handler = ApplicationProtocolNegotiationHandler { result in
XCTFail("Negotiation fired")
return loop.makeSucceededFuture(result: ())
return loop.makeSucceededFuture(())
}
try channel.pipeline.add(handler: handler).wait()
@ -80,7 +80,7 @@ class ApplicationProtocolNegotiationHandlerTests: XCTestCase {
try channel.pipeline.assertContains(handler: handler)
// Now we fire the future.
continuePromise.succeed(result: ())
continuePromise.succeed(())
// Now the handler should have removed itself from the pipeline.
try channel.pipeline.assertDoesNotContain(handler: handler)
@ -102,7 +102,7 @@ class ApplicationProtocolNegotiationHandlerTests: XCTestCase {
let handler = ApplicationProtocolNegotiationHandler { result in
XCTFail("Should not be called")
return loop.makeSucceededFuture(result: ())
return loop.makeSucceededFuture(())
}
try channel.pipeline.add(handler: handler).wait()
@ -135,7 +135,7 @@ class ApplicationProtocolNegotiationHandlerTests: XCTestCase {
XCTAssertNil(channel.readInbound())
// Complete the pipeline swap.
continuePromise.succeed(result: ())
continuePromise.succeed(())
// Now everything should have been unbuffered.
XCTAssertEqual(channel.readInbound()!, "writes")
@ -166,7 +166,7 @@ class ApplicationProtocolNegotiationHandlerTests: XCTestCase {
// Now satisfy the future, which forces data unbuffering. As we haven't buffered any data,
// readComplete should not be fired.
continuePromise.succeed(result: ())
continuePromise.succeed(())
XCTAssertEqual(readCompleteHandler.readCompleteCount, 0)
XCTAssertFalse(try channel.finish())
@ -195,7 +195,7 @@ class ApplicationProtocolNegotiationHandlerTests: XCTestCase {
XCTAssertEqual(readCompleteHandler.readCompleteCount, 1)
// Now satisfy the future, which forces data unbuffering. This should fire readComplete.
continuePromise.succeed(result: ())
continuePromise.succeed(())
XCTAssertEqual(channel.readInbound()!, "a write")
XCTAssertEqual(readCompleteHandler.readCompleteCount, 2)

View File

@ -293,7 +293,7 @@ class SNIHandlerTest: XCTestCase {
// Now we're going to complete the promise and run the loop. This should cause the complete
// ClientHello to be sent on, and the SNIHandler to be removed from the pipeline.
continuePromise.succeed(result: ())
continuePromise.succeed(())
loop.run()
let writtenBuffer: ByteBuffer = channel.readInbound() ?? channel.allocator.buffer(capacity: 0)
@ -335,7 +335,7 @@ class SNIHandlerTest: XCTestCase {
// Now we're going to complete the promise and run the loop. This should cause the complete
// ClientHello to be sent on, and the SNIHandler to be removed from the pipeline.
continuePromise.succeed(result: ())
continuePromise.succeed(())
loop.run()
let writtenBuffer: ByteBuffer? = channel.readInbound()
@ -358,7 +358,7 @@ class SNIHandlerTest: XCTestCase {
let handler = ByteToMessageHandler(SNIHandler { result in
XCTFail("Handler was called")
return loop.makeSucceededFuture(result: ())
return loop.makeSucceededFuture(())
})
try channel.pipeline.add(handler: handler).wait()

View File

@ -161,7 +161,7 @@ public class AcceptBackoffHandlerTest: XCTestCase {
}
public func channelInactive(ctx: ChannelHandlerContext) {
promise.succeed(result: ())
promise.succeed(())
}
func waitForInactive() throws {

View File

@ -30,13 +30,13 @@ class BootstrapTest: XCTestCase {
let serverChannel = try assertNoThrowWithValue(ServerBootstrap(group: group)
.childChannelInitializer { channel in
XCTAssert(channel.eventLoop.inEventLoop)
childChannelDone.succeed(result: ())
return channel.eventLoop.makeSucceededFuture(result: ())
childChannelDone.succeed(())
return channel.eventLoop.makeSucceededFuture(())
}
.serverChannelInitializer { channel in
XCTAssert(channel.eventLoop.inEventLoop)
serverChannelDone.succeed(result: ())
return channel.eventLoop.makeSucceededFuture(result: ())
serverChannelDone.succeed(())
return channel.eventLoop.makeSucceededFuture(())
}
.bind(host: "localhost", port: 0)
.wait())
@ -47,7 +47,7 @@ class BootstrapTest: XCTestCase {
let client = try assertNoThrowWithValue(ClientBootstrap(group: group)
.channelInitializer { channel in
XCTAssert(channel.eventLoop.inEventLoop)
return channel.eventLoop.makeSucceededFuture(result: ())
return channel.eventLoop.makeSucceededFuture(())
}
.connect(to: serverChannel.localAddress!)
.wait(), message: "resolver debug info: \(try! resolverDebugInformation(eventLoop: group.next(),host: "localhost", previouslyReceivedResult: serverChannel.localAddress!))")

View File

@ -138,7 +138,7 @@ class ChannelNotificationTest: XCTestCase {
XCTAssertFalse(ctx.channel.closeFuture.isFulfilled)
XCTAssertFalse(self.activeChannelPromise.futureResult.isFulfilled)
self.activeChannelPromise.succeed(result: ctx.channel)
self.activeChannelPromise.succeed(ctx.channel)
}
public func channelInactive(ctx: ChannelHandlerContext) {
@ -370,7 +370,7 @@ class ChannelNotificationTest: XCTestCase {
XCTAssertEqual(.readComplete, state)
state = .inactive
promise.succeed(result: ())
promise.succeed(())
}
}

View File

@ -80,7 +80,7 @@ class OptionsCollectingChannel: Channel {
func setOption<T>(option: T, value: T.OptionType) -> EventLoopFuture<Void> where T : ChannelOption {
self.allOptions.append((option, value))
return self.eventLoop.makeSucceededFuture(result: ())
return self.eventLoop.makeSucceededFuture(())
}
func getOption<T>(option: T) -> EventLoopFuture<T.OptionType> where T : ChannelOption {

View File

@ -153,7 +153,7 @@ class ChannelPipelineTest: XCTestCase {
do {
ctx.write(self.wrapOutboundOut(try body(self.unwrapOutboundIn(data))), promise: promise)
} catch let err {
promise!.fail(error: err)
promise!.fail(err)
}
}
}
@ -167,7 +167,7 @@ class ChannelPipelineTest: XCTestCase {
}
public func bind(ctx: ChannelHandlerContext, to address: SocketAddress, promise: EventLoopPromise<Void>?) {
promise!.fail(error: TestFailureError.CalledBind)
promise!.fail(TestFailureError.CalledBind)
}
}

View File

@ -81,7 +81,7 @@ public class ChannelTests: XCTestCase {
let serverChannel = try assertNoThrowWithValue(ServerBootstrap(group: group)
.serverChannelOption(ChannelOptions.socket(SocketOptionLevel(SOL_SOCKET), SO_REUSEADDR), value: 1)
.childChannelInitializer { channel in
serverAcceptedChannelPromise.succeed(result: channel)
serverAcceptedChannelPromise.succeed(channel)
return channel.pipeline.add(handler: serverLifecycleHandler)
}.bind(host: "127.0.0.1", port: 0).wait())
@ -182,8 +182,8 @@ public class ChannelTests: XCTestCase {
let serverChannel = try assertNoThrowWithValue(ServerBootstrap(group: group)
.serverChannelOption(ChannelOptions.socket(SocketOptionLevel(SOL_SOCKET), SO_REUSEADDR), value: 1)
.childChannelInitializer { channel in
childChannelPromise.succeed(result: channel)
return channel.eventLoop.makeSucceededFuture(result: ())
childChannelPromise.succeed(channel)
return channel.eventLoop.makeSucceededFuture(())
}.bind(host: "127.0.0.1", port: 0).wait())
let clientChannel = try assertNoThrowWithValue(ClientBootstrap(group: group)
@ -1288,14 +1288,14 @@ public class ChannelTests: XCTestCase {
inputShutdownEventReceived = true
if shutdownEvent == .input {
promise.succeed(result: ())
promise.succeed(())
}
case .outputClosed:
XCTAssertFalse(outputShutdownEventReceived)
outputShutdownEventReceived = true
if shutdownEvent == .output {
promise.succeed(result: ())
promise.succeed(())
}
}
@ -1320,7 +1320,7 @@ public class ChannelTests: XCTestCase {
XCTAssertTrue(outputShutdownEventReceived)
}
promise.succeed(result: ())
promise.succeed(())
}
}
@ -1358,7 +1358,7 @@ public class ChannelTests: XCTestCase {
}
func channelRegistered(ctx: ChannelHandlerContext) {
self.promise.succeed(result: ctx.channel.pipeline)
self.promise.succeed(ctx.channel.pipeline)
}
}
weak var weakClientChannel: Channel? = nil
@ -1377,9 +1377,9 @@ public class ChannelTests: XCTestCase {
let serverChannel = try assertNoThrowWithValue(ServerBootstrap(group: group)
.serverChannelOption(ChannelOptions.socket(SocketOptionLevel(SOL_SOCKET), SO_REUSEADDR), value: 1)
.childChannelInitializer { channel in
serverChildChannelPromise.succeed(result: channel)
serverChildChannelPromise.succeed(channel)
channel.close(promise: nil)
return channel.eventLoop.makeSucceededFuture(result: ())
return channel.eventLoop.makeSucceededFuture(())
}
.bind(host: "127.0.0.1", port: 0).wait())
@ -1514,7 +1514,7 @@ public class ChannelTests: XCTestCase {
}
func channelReadComplete(ctx: ChannelHandlerContext) {
self.waitingForReadPromise?.succeed(result: ())
self.waitingForReadPromise?.succeed(())
self.waitingForReadPromise = nil
}
@ -1747,7 +1747,7 @@ public class ChannelTests: XCTestCase {
}
public func channelInactive(ctx: ChannelHandlerContext) {
promise.succeed(result: ())
promise.succeed(())
}
}
@ -1902,7 +1902,7 @@ public class ChannelTests: XCTestCase {
func channelRead(ctx: ChannelHandlerContext, data: NIOAny) {
XCTAssertEqual(.active, self.state)
self.state = .read
self.hasReadPromise.succeed(result: ())
self.hasReadPromise.succeed(())
}
func channelActive(ctx: ChannelHandlerContext) {
XCTAssertEqual(.registered, self.state)
@ -1911,10 +1911,10 @@ public class ChannelTests: XCTestCase {
func channelRegistered(ctx: ChannelHandlerContext) {
XCTAssertEqual(.start, self.state)
self.state = .registered
self.hasRegisteredPromise.succeed(result: ())
self.hasRegisteredPromise.succeed(())
}
func channelUnregistered(ctx: ChannelHandlerContext) {
self.hasUnregisteredPromise.succeed(result: ())
self.hasUnregisteredPromise.succeed(())
}
}
@ -2100,7 +2100,7 @@ public class ChannelTests: XCTestCase {
func channelInactive(ctx: ChannelHandlerContext) {
XCTAssertEqual(.error, self.state)
self.state = .inactive
self.allDone.succeed(result: ())
self.allDone.succeed(())
}
}
let group = MultiThreadedEventLoopGroup(numberOfThreads: 2)
@ -2529,7 +2529,7 @@ public class ChannelTests: XCTestCase {
}.whenFailure { error in
XCTAssertEqual(ChannelError.ioOnClosedChannel, error as? ChannelError)
XCTAssertTrue(inSameStackFrame)
self.allDonePromise.succeed(result: ())
self.allDonePromise.succeed(())
}
}
}
@ -2587,9 +2587,9 @@ public class ChannelTests: XCTestCase {
.childChannelOption(ChannelOptions.socket(SocketOptionLevel(SOL_SOCKET), SO_KEEPALIVE), value: 1)
.childChannelOption(ChannelOptions.socket(SocketOptionLevel(IPPROTO_TCP), TCP_NODELAY), value: 1)
.childChannelInitializer { channel in
acceptedChannels[numberOfAcceptedChannel].succeed(result: channel)
acceptedChannels[numberOfAcceptedChannel].succeed(channel)
numberOfAcceptedChannel += 1
return channel.eventLoop.makeSucceededFuture(result: ())
return channel.eventLoop.makeSucceededFuture(())
}
.bind(host: "127.0.0.1", port: 0)
.wait())
@ -2656,7 +2656,7 @@ fileprivate final class FailRegistrationAndDelayCloseHandler: ChannelOutboundHan
typealias OutboundIn = Never
func register(ctx: ChannelHandlerContext, promise: EventLoopPromise<Void>?) {
promise!.fail(error: RegistrationFailedError.error)
promise!.fail(RegistrationFailedError.error)
}
func close(ctx: ChannelHandlerContext, mode: CloseMode, promise: EventLoopPromise<Void>?) {
@ -2699,7 +2699,7 @@ fileprivate class VerifyConnectionFailureHandler: ChannelInboundHandler {
func channelUnregistered(ctx: ChannelHandlerContext) {
XCTAssertEqual(.registered, self.state)
self.state = .unregistered
self.allDone.succeed(result: ())
self.allDone.succeed(())
ctx.fireChannelUnregistered()
}
}

View File

@ -46,7 +46,7 @@ private final class ChannelInactivePromiser: ChannelInboundHandler {
}
func channelInactive(ctx: ChannelHandlerContext) {
channelInactivePromise.succeed(result: ())
channelInactivePromise.succeed(())
}
}
@ -598,7 +598,7 @@ private class PairOfBytesDecoder: ByteToMessageDecoder {
func decodeLast(ctx: ChannelHandlerContext, buffer: inout ByteBuffer) throws -> DecodingState {
self.decodeLastCalls += 1
XCTAssertEqual(1, self.decodeLastCalls)
self.lastPromise.succeed(result: buffer)
self.lastPromise.succeed(buffer)
return .needMoreData
}
}

View File

@ -34,24 +34,24 @@ private class IntChannelCore: ChannelCore {
}
func register0(promise: EventLoopPromise<Void>?) {
promise?.fail(error: NotImplementedError())
promise?.fail(NotImplementedError())
}
func registerAlreadyConfigured0(promise: EventLoopPromise<Void>?) {
promise?.fail(error: NotImplementedError())
promise?.fail(NotImplementedError())
}
func bind0(to: SocketAddress, promise: EventLoopPromise<Void>?) {
promise?.fail(error: NotImplementedError())
promise?.fail(NotImplementedError())
}
func connect0(to: SocketAddress, promise: EventLoopPromise<Void>?) {
promise?.fail(error: NotImplementedError())
promise?.fail(NotImplementedError())
}
func write0(_ data: NIOAny, promise: EventLoopPromise<Void>?) {
_ = self.unwrapData(data, as: Int.self)
promise?.succeed(result: ())
promise?.succeed(())
}
func flush0() {
@ -63,11 +63,11 @@ private class IntChannelCore: ChannelCore {
}
func close0(error: Error, mode: CloseMode, promise: EventLoopPromise<Void>?) {
promise?.fail(error: NotImplementedError())
promise?.fail(NotImplementedError())
}
func triggerUserOutboundEvent0(_ event: Any, promise: EventLoopPromise<Void>?) {
promise?.fail(error: NotImplementedError())
promise?.fail(NotImplementedError())
}
func channelRead0(_ data: NIOAny) {

View File

@ -24,7 +24,7 @@ private extension Channel {
}
XCTFail("Could not wait for reads")
return self.eventLoop.makeSucceededFuture(result: [] as [AddressedEnvelope<ByteBuffer>])
return self.eventLoop.makeSucceededFuture([] as [AddressedEnvelope<ByteBuffer>])
}.wait()
}
}
@ -65,7 +65,7 @@ private class DatagramReadRecorder<DataType>: ChannelInboundHandler {
reads.append(data)
if let promise = readWaiters.removeValue(forKey: reads.count) {
promise.succeed(result: reads)
promise.succeed(reads)
}
ctx.fireChannelRead(self.wrapInboundOut(data))
@ -73,7 +73,7 @@ private class DatagramReadRecorder<DataType>: ChannelInboundHandler {
func notifyForDatagrams(_ count: Int) -> EventLoopFuture<[AddressedEnvelope<DataType>]> {
guard reads.count < count else {
return loop!.makeSucceededFuture(result: .init(reads.prefix(count)))
return loop!.makeSucceededFuture(.init(reads.prefix(count)))
}
readWaiters[count] = loop!.makePromise()
@ -212,7 +212,7 @@ final class DatagramChannelTests: XCTestCase {
// We're going to try to write loads, and loads, and loads of data. In this case, one more
// write than the iovecs max.
var overall: EventLoopFuture<Void> = self.firstChannel.eventLoop.makeSucceededFuture(result: ())
var overall: EventLoopFuture<Void> = self.firstChannel.eventLoop.makeSucceededFuture(())
for _ in 0...Socket.writevLimitIOVectors {
let myPromise = self.firstChannel.eventLoop.makePromise(of: Void.self)
var buffer = self.firstChannel.allocator.buffer(capacity: 1)
@ -229,7 +229,7 @@ final class DatagramChannelTests: XCTestCase {
func testSendmmsgLotsOfData() throws {
var datagrams = 0
var overall = self.firstChannel.eventLoop.makeSucceededFuture(result: ())
var overall = self.firstChannel.eventLoop.makeSucceededFuture(())
// We defer this work to the background thread because otherwise it incurs an enormous number of context
// switches.
try self.firstChannel.eventLoop.submit {
@ -376,7 +376,7 @@ final class DatagramChannelTests: XCTestCase {
func errorCaught(ctx: ChannelHandlerContext, error: Error) {
if let ioError = error as? IOError {
self.promise.succeed(result: ioError)
self.promise.succeed(ioError)
}
}
}

View File

@ -249,7 +249,7 @@ class EchoServerClientTest : XCTestCase {
}
func channelActive(ctx: ChannelHandlerContext) {
promise.succeed(result: ())
promise.succeed(())
ctx.fireChannelActive()
}
@ -351,7 +351,7 @@ class EchoServerClientTest : XCTestCase {
XCTFail("unexpected error: \(err)")
}
}.whenComplete { (_: Result<Void, Error>) in
self.channelInactivePromise.succeed(result: ())
self.channelInactivePromise.succeed(())
}
}
}
@ -371,7 +371,7 @@ class EchoServerClientTest : XCTestCase {
XCTFail("unexpected error: \(err)")
}
}.whenComplete { (_: Result<Void, Error>) in
self.channelUnregisteredPromise.succeed(result: ())
self.channelUnregisteredPromise.succeed(())
}
}
}
@ -694,7 +694,7 @@ class EchoServerClientTest : XCTestCase {
}
public func channelInactive(ctx: ChannelHandlerContext) {
self.promise.succeed(result: ())
self.promise.succeed(())
}
}
@ -741,7 +741,7 @@ class EchoServerClientTest : XCTestCase {
acceptedRemotePort.store(channel.remoteAddress?.port ?? -3)
acceptedLocalPort.store(channel.localAddress?.port ?? -4)
sem.signal()
return channel.eventLoop.makeSucceededFuture(result: ())
return channel.eventLoop.makeSucceededFuture(())
}.bind(host: host, port: 0).wait()
} catch let e as SocketAddressError {
if case .unknown(host, port: 0) = e {
@ -802,8 +802,8 @@ class EchoServerClientTest : XCTestCase {
let clientChannel = try assertNoThrowWithValue(ClientBootstrap(group: group)
.connect(host: "localhost", port: Int(serverChannel.localAddress!.port!))
.flatMapError {
promise.fail(error: $0)
return group.next().makeFailedFuture(error: $0)
promise.fail($0)
return group.next().makeFailedFuture($0)
}
.wait())

View File

@ -119,7 +119,7 @@ class EmbeddedChannelTest: XCTestCase {
typealias OutboundOut = Never
public func write(ctx: ChannelHandlerContext, data: NIOAny, promise: EventLoopPromise<Void>?) {
promise!.fail(error: ChannelError.operationUnsupported)
promise!.fail(ChannelError.operationUnsupported)
}
}

View File

@ -54,12 +54,12 @@ class EventLoopFutureTest : XCTestCase {
var fN = f0.fold(f1s) { (f1Value: [Int], f2Value: Int) -> EventLoopFuture<[Int]> in
XCTAssert(eventLoop0.inEventLoop)
return eventLoop1.makeSucceededFuture(result: f1Value + [f2Value])
return eventLoop1.makeSucceededFuture(f1Value + [f2Value])
}
fN = fN.fold(f2s) { (f1Value: [Int], f2Value: Int) -> EventLoopFuture<[Int]> in
XCTAssert(eventLoop0.inEventLoop)
return eventLoop2.makeSucceededFuture(result: f1Value + [f2Value])
return eventLoop2.makeSucceededFuture(f1Value + [f2Value])
}
let allValues = try fN.wait()
@ -71,13 +71,13 @@ class EventLoopFutureTest : XCTestCase {
func testFoldWithSuccessAndAllSuccesses() throws {
let eventLoop = EmbeddedEventLoop()
let secondEventLoop = EmbeddedEventLoop()
let f0 = eventLoop.makeSucceededFuture(result: [0])
let f0 = eventLoop.makeSucceededFuture([0])
let futures: [EventLoopFuture<Int>] = (1...5).map { (id: Int) in secondEventLoop.makeSucceededFuture(result: id) }
let futures: [EventLoopFuture<Int>] = (1...5).map { (id: Int) in secondEventLoop.makeSucceededFuture(id) }
let fN = f0.fold(futures) { (f1Value: [Int], f2Value: Int) -> EventLoopFuture<[Int]> in
XCTAssert(eventLoop.inEventLoop)
return secondEventLoop.makeSucceededFuture(result: f1Value + [f2Value])
return secondEventLoop.makeSucceededFuture(f1Value + [f2Value])
}
let allValues = try fN.wait()
@ -90,19 +90,19 @@ class EventLoopFutureTest : XCTestCase {
struct E: Error {}
let eventLoop = EmbeddedEventLoop()
let secondEventLoop = EmbeddedEventLoop()
let f0: EventLoopFuture<Int> = eventLoop.makeSucceededFuture(result: 0)
let f0: EventLoopFuture<Int> = eventLoop.makeSucceededFuture(0)
let promises: [EventLoopPromise<Int>] = (0..<100).map { (_: Int) in secondEventLoop.makePromise() }
var futures = promises.map { $0.futureResult }
let failedFuture: EventLoopFuture<Int> = secondEventLoop.makeFailedFuture(error: E())
let failedFuture: EventLoopFuture<Int> = secondEventLoop.makeFailedFuture(E())
futures.insert(failedFuture, at: futures.startIndex)
let fN = f0.fold(futures) { (f1Value: Int, f2Value: Int) -> EventLoopFuture<Int> in
XCTAssert(eventLoop.inEventLoop)
return secondEventLoop.makeSucceededFuture(result: f1Value + f2Value)
return secondEventLoop.makeSucceededFuture(f1Value + f2Value)
}
_ = promises.map { $0.succeed(result: 0) }
_ = promises.map { $0.succeed(0) }
XCTAssert(fN.isFulfilled)
do {
_ = try fN.wait()
@ -116,13 +116,13 @@ class EventLoopFutureTest : XCTestCase {
func testFoldWithSuccessAndEmptyFutureList() throws {
let eventLoop = EmbeddedEventLoop()
let f0 = eventLoop.makeSucceededFuture(result: 0)
let f0 = eventLoop.makeSucceededFuture(0)
let futures: [EventLoopFuture<Int>] = []
let fN = f0.fold(futures) { (f1Value: Int, f2Value: Int) -> EventLoopFuture<Int> in
XCTAssert(eventLoop.inEventLoop)
return eventLoop.makeSucceededFuture(result: f1Value + f2Value)
return eventLoop.makeSucceededFuture(f1Value + f2Value)
}
let summationResult = try fN.wait()
@ -133,13 +133,13 @@ class EventLoopFutureTest : XCTestCase {
func testFoldWithFailureAndEmptyFutureList() throws {
struct E: Error {}
let eventLoop = EmbeddedEventLoop()
let f0: EventLoopFuture<Int> = eventLoop.makeFailedFuture(error: E())
let f0: EventLoopFuture<Int> = eventLoop.makeFailedFuture(E())
let futures: [EventLoopFuture<Int>] = []
let fN = f0.fold(futures) { (f1Value: Int, f2Value: Int) -> EventLoopFuture<Int> in
XCTAssert(eventLoop.inEventLoop)
return eventLoop.makeSucceededFuture(result: f1Value + f2Value)
return eventLoop.makeSucceededFuture(f1Value + f2Value)
}
XCTAssert(fN.isFulfilled)
@ -157,17 +157,17 @@ class EventLoopFutureTest : XCTestCase {
struct E: Error {}
let eventLoop = EmbeddedEventLoop()
let secondEventLoop = EmbeddedEventLoop()
let f0: EventLoopFuture<Int> = eventLoop.makeFailedFuture(error: E())
let f0: EventLoopFuture<Int> = eventLoop.makeFailedFuture(E())
let promises: [EventLoopPromise<Int>] = (0..<100).map { (_: Int) in secondEventLoop.makePromise() }
let futures = promises.map { $0.futureResult }
let fN = f0.fold(futures) { (f1Value: Int, f2Value: Int) -> EventLoopFuture<Int> in
XCTAssert(eventLoop.inEventLoop)
return secondEventLoop.makeSucceededFuture(result: f1Value + f2Value)
return secondEventLoop.makeSucceededFuture(f1Value + f2Value)
}
_ = promises.map { $0.succeed(result: 1) }
_ = promises.map { $0.succeed(1) }
XCTAssert(fN.isFulfilled)
do {
_ = try fN.wait()
@ -183,14 +183,14 @@ class EventLoopFutureTest : XCTestCase {
struct E: Error {}
let eventLoop = EmbeddedEventLoop()
let secondEventLoop = EmbeddedEventLoop()
let f0: EventLoopFuture<Int> = eventLoop.makeFailedFuture(error: E())
let f0: EventLoopFuture<Int> = eventLoop.makeFailedFuture(E())
let promises: [EventLoopPromise<Int>] = (0..<100).map { (_: Int) in secondEventLoop.makePromise() }
let futures = promises.map { $0.futureResult }
let fN = f0.fold(futures) { (f1Value: Int, f2Value: Int) -> EventLoopFuture<Int> in
XCTAssert(eventLoop.inEventLoop)
return secondEventLoop.makeSucceededFuture(result: f1Value + f2Value)
return secondEventLoop.makeSucceededFuture(f1Value + f2Value)
}
XCTAssert(fN.isFulfilled)
@ -208,13 +208,13 @@ class EventLoopFutureTest : XCTestCase {
struct E: Error {}
let eventLoop = EmbeddedEventLoop()
let secondEventLoop = EmbeddedEventLoop()
let f0: EventLoopFuture<Int> = eventLoop.makeFailedFuture(error: E())
let f0: EventLoopFuture<Int> = eventLoop.makeFailedFuture(E())
let futures: [EventLoopFuture<Int>] = (0..<100).map { (_: Int) in secondEventLoop.makeFailedFuture(error: E()) }
let futures: [EventLoopFuture<Int>] = (0..<100).map { (_: Int) in secondEventLoop.makeFailedFuture(E()) }
let fN = f0.fold(futures) { (f1Value: Int, f2Value: Int) -> EventLoopFuture<Int> in
XCTAssert(eventLoop.inEventLoop)
return secondEventLoop.makeSucceededFuture(result: f1Value + f2Value)
return secondEventLoop.makeSucceededFuture(f1Value + f2Value)
}
XCTAssert(fN.isFulfilled)
@ -243,7 +243,7 @@ class EventLoopFutureTest : XCTestCase {
let futures = promises.map { $0.futureResult }
let fN: EventLoopFuture<Void> = EventLoopFuture<Void>.andAll(futures, eventLoop: eventLoop)
_ = promises.map { $0.succeed(result: ()) }
_ = promises.map { $0.succeed(()) }
() = try fN.wait()
}
@ -254,7 +254,7 @@ class EventLoopFutureTest : XCTestCase {
let futures = promises.map { $0.futureResult }
let fN: EventLoopFuture<Void> = EventLoopFuture<Void>.andAll(futures, eventLoop: eventLoop)
_ = promises.map { $0.fail(error: E()) }
_ = promises.map { $0.fail(E()) }
do {
() = try fN.wait()
XCTFail("should've thrown an error")
@ -269,9 +269,9 @@ class EventLoopFutureTest : XCTestCase {
struct E: Error {}
let eventLoop = EmbeddedEventLoop()
var promises: [EventLoopPromise<Void>] = (0..<100).map { (_: Int) in eventLoop.makePromise() }
_ = promises.map { $0.succeed(result: ()) }
_ = promises.map { $0.succeed(()) }
let failedPromise = eventLoop.makePromise(of: Void.self)
failedPromise.fail(error: E())
failedPromise.fail(E())
promises.append(failedPromise)
let futures = promises.map { $0.futureResult }
@ -294,7 +294,7 @@ class EventLoopFutureTest : XCTestCase {
let fN: EventLoopFuture<[Int]> = EventLoopFuture<[Int]>.reduce([], futures, eventLoop: eventLoop) {$0 + [$1]}
for i in 1...5 {
promises[i - 1].succeed(result: (i))
promises[i - 1].succeed((i))
}
let results = try fN.wait()
XCTAssertEqual(results, [1, 2, 3, 4, 5])
@ -319,7 +319,7 @@ class EventLoopFutureTest : XCTestCase {
let futures = promises.map { $0.futureResult }
let fN: EventLoopFuture<Int> = EventLoopFuture<Int>.reduce(0, futures, eventLoop: eventLoop, +)
_ = promises.map { $0.fail(error: E()) }
_ = promises.map { $0.fail(E()) }
XCTAssert(fN.eventLoop === eventLoop)
do {
_ = try fN.wait()
@ -335,9 +335,9 @@ class EventLoopFutureTest : XCTestCase {
struct E: Error {}
let eventLoop = EmbeddedEventLoop()
var promises: [EventLoopPromise<Int>] = (0..<100).map { (_: Int) in eventLoop.makePromise() }
_ = promises.map { $0.succeed(result: (1)) }
_ = promises.map { $0.succeed((1)) }
let failedPromise = eventLoop.makePromise(of: Int.self)
failedPromise.fail(error: E())
failedPromise.fail(E())
promises.append(failedPromise)
let futures = promises.map { $0.futureResult }
@ -365,7 +365,7 @@ class EventLoopFutureTest : XCTestCase {
let futures = promises.map { $0.futureResult }
let fN: EventLoopFuture<Int> = EventLoopFuture<Int>.reduce(0, futures, eventLoop: eventLoop, +)
failedPromise.fail(error: E())
failedPromise.fail(E())
XCTAssertTrue(fN.isFulfilled)
XCTAssert(fN.eventLoop === eventLoop)
@ -381,7 +381,7 @@ class EventLoopFutureTest : XCTestCase {
func testReduceIntoWithAllSuccesses() throws {
let eventLoop = EmbeddedEventLoop()
let futures: [EventLoopFuture<Int>] = [1, 2, 2, 3, 3, 3].map { (id: Int) in eventLoop.makeSucceededFuture(result: id) }
let futures: [EventLoopFuture<Int>] = [1, 2, 2, 3, 3, 3].map { (id: Int) in eventLoop.makeSucceededFuture(id) }
let fN: EventLoopFuture<[Int: Int]> = EventLoopFuture<[Int: Int]>.reduce(into: [:], futures, eventLoop: eventLoop) { (freqs, elem) in
if let value = freqs[elem] {
@ -416,7 +416,7 @@ class EventLoopFutureTest : XCTestCase {
func testReduceIntoWithAllFailure() throws {
struct E: Error {}
let eventLoop = EmbeddedEventLoop()
let futures: [EventLoopFuture<Int>] = [1, 2, 2, 3, 3, 3].map { (id: Int) in eventLoop.makeFailedFuture(error: E()) }
let futures: [EventLoopFuture<Int>] = [1, 2, 2, 3, 3, 3].map { (id: Int) in eventLoop.makeFailedFuture(E()) }
let fN: EventLoopFuture<[Int: Int]> = EventLoopFuture<[Int: Int]>.reduce(into: [:], futures, eventLoop: eventLoop) { (freqs, elem) in
if let value = freqs[elem] {
@ -484,7 +484,7 @@ class EventLoopFutureTest : XCTestCase {
ran = true
XCTAssertEqual($0, 6)
}
p.succeed(result: "hello")
p.succeed("hello")
XCTAssertTrue(ran)
}
@ -507,7 +507,7 @@ class EventLoopFutureTest : XCTestCase {
ran = true
XCTAssertEqual(.some(DummyError.dummyError), $0 as? DummyError)
}
p.succeed(result: "hello")
p.succeed("hello")
XCTAssertTrue(ran)
}
@ -530,7 +530,7 @@ class EventLoopFutureTest : XCTestCase {
ran = true
XCTAssertEqual($0, 5)
}
p.fail(error: DummyError.dummyError)
p.fail(DummyError.dummyError)
XCTAssertTrue(ran)
}
@ -554,7 +554,7 @@ class EventLoopFutureTest : XCTestCase {
ran = true
XCTAssertEqual(.some(DummyError.dummyError2), $0 as? DummyError)
}
p.fail(error: DummyError.dummyError1)
p.fail(DummyError.dummyError1)
XCTAssertTrue(ran)
}
@ -572,7 +572,7 @@ class EventLoopFutureTest : XCTestCase {
XCTAssertEqual(state, 2)
state += 1
}
p.succeed(result: ())
p.succeed(())
XCTAssertTrue(p.futureResult.isFulfilled)
XCTAssertEqual(state, 3)
}
@ -580,12 +580,12 @@ class EventLoopFutureTest : XCTestCase {
func testEventLoopHoppingInThen() throws {
let n = 20
let elg = MultiThreadedEventLoopGroup(numberOfThreads: n)
var prev: EventLoopFuture<Int> = elg.next().makeSucceededFuture(result: 0)
var prev: EventLoopFuture<Int> = elg.next().makeSucceededFuture(0)
(1..<20).forEach { (i: Int) in
let p = elg.next().makePromise(of: Int.self)
prev.flatMap { (i2: Int) -> EventLoopFuture<Int> in
XCTAssertEqual(i - 1, i2)
p.succeed(result: i)
p.succeed(i)
return p.futureResult
}.whenSuccess { i2 in
XCTAssertEqual(i, i2)
@ -602,19 +602,19 @@ class EventLoopFutureTest : XCTestCase {
}
let n = 20
let elg = MultiThreadedEventLoopGroup(numberOfThreads: n)
var prev: EventLoopFuture<Int> = elg.next().makeSucceededFuture(result: 0)
var prev: EventLoopFuture<Int> = elg.next().makeSucceededFuture(0)
(1..<n).forEach { (i: Int) in
let p = elg.next().makePromise(of: Int.self)
prev.flatMap { (i2: Int) -> EventLoopFuture<Int> in
XCTAssertEqual(i - 1, i2)
if i == n/2 {
p.fail(error: DummyError.dummy)
p.fail(DummyError.dummy)
} else {
p.succeed(result: i)
p.succeed(i)
}
return p.futureResult
}.flatMapError { error in
p.fail(error: error)
p.fail(error)
return p.futureResult
}.whenSuccess { i2 in
XCTAssertEqual(i, i2)
@ -641,7 +641,7 @@ class EventLoopFutureTest : XCTestCase {
let allOfEm = EventLoopFuture<Void>.andAll(ps.map { $0.futureResult }, eventLoop: elg.next())
ps.reversed().forEach { p in
DispatchQueue.global().async {
p.succeed(result: ())
p.succeed(())
}
}
try allOfEm.wait()
@ -660,9 +660,9 @@ class EventLoopFutureTest : XCTestCase {
ps.reversed().enumerated().forEach { idx, p in
DispatchQueue.global().async {
if idx == n / 2 {
p.fail(error: DummyError.dummy)
p.fail(DummyError.dummy)
} else {
p.succeed(result: ())
p.succeed(())
}
}
}
@ -714,16 +714,16 @@ class EventLoopFutureTest : XCTestCase {
if whoGoesFirst.0 {
q1.async {
if whoSucceeds.0 {
p0.succeed(result: 7)
p0.succeed(7)
} else {
p0.fail(error: DummyError.dummy0)
p0.fail(DummyError.dummy0)
}
if !whoGoesFirst.1 {
q2.asyncAfter(deadline: .now() + 0.1) {
if whoSucceeds.1 {
p1.succeed(result: "hello")
p1.succeed("hello")
} else {
p1.fail(error: DummyError.dummy1)
p1.fail(DummyError.dummy1)
}
}
}
@ -732,16 +732,16 @@ class EventLoopFutureTest : XCTestCase {
if whoGoesFirst.1 {
q2.async {
if whoSucceeds.1 {
p1.succeed(result: "hello")
p1.succeed("hello")
} else {
p1.fail(error: DummyError.dummy1)
p1.fail(DummyError.dummy1)
}
if !whoGoesFirst.0 {
q1.asyncAfter(deadline: .now() + 0.1) {
if whoSucceeds.0 {
p0.succeed(result: 7)
p0.succeed(7)
} else {
p0.fail(error: DummyError.dummy0)
p0.fail(DummyError.dummy0)
}
}
}
@ -786,7 +786,7 @@ class EventLoopFutureTest : XCTestCase {
}.hopTo(eventLoop: loop2).map {
XCTAssertTrue(loop2.inEventLoop)
}
succeedingPromise.succeed(result: ())
succeedingPromise.succeed(())
XCTAssertNoThrow(try succeedingFuture.wait())
}
@ -810,7 +810,7 @@ class EventLoopFutureTest : XCTestCase {
XCTAssertTrue(loop1.inEventLoop)
}
failingPromise.fail(error: EventLoopFutureTestError.example)
failingPromise.fail(EventLoopFutureTestError.example)
XCTAssertNoThrow(try failingFuture.wait())
}
@ -826,6 +826,6 @@ class EventLoopFutureTest : XCTestCase {
let noHoppingPromise = loop1.makePromise(of: Void.self)
let noHoppingFuture = noHoppingPromise.futureResult.hopTo(eventLoop: loop1)
XCTAssertTrue(noHoppingFuture === noHoppingPromise.futureResult)
noHoppingPromise.succeed(result: ())
noHoppingPromise.succeed(())
}
}

View File

@ -314,7 +314,7 @@ public class EventLoopTest : XCTestCase {
}
func channelActive(ctx: ChannelHandlerContext) {
self.channelActivePromise?.succeed(result: ())
self.channelActivePromise?.succeed(())
}
func close(ctx: ChannelHandlerContext, mode: CloseMode, promise: EventLoopPromise<Void>?) {
@ -398,7 +398,7 @@ public class EventLoopTest : XCTestCase {
// Now let it close.
promiseQueue.sync {
promises.forEach { $0.succeed(result: ()) }
promises.forEach { $0.succeed(()) }
}
XCTAssertNoThrow(try loopCloseFut.wait())
}

View File

@ -99,13 +99,13 @@ private extension Channel {
func succeedConnection() {
return try! self.pipeline.context(name: CONNECT_DELAYER).map {
($0.handler as! ConnectionDelayer).connectPromise!.succeed(result: ())
($0.handler as! ConnectionDelayer).connectPromise!.succeed(())
}.wait()
}
func failConnection(error: Error) {
return try! self.pipeline.context(name: CONNECT_DELAYER).map {
($0.handler as! ConnectionDelayer).connectPromise!.fail(error: error)
($0.handler as! ConnectionDelayer).connectPromise!.fail(error)
}.wait()
}
@ -215,7 +215,7 @@ extension DummyResolver.Event: Equatable {
private func defaultChannelBuilder(loop: EventLoop, family: Int32) -> EventLoopFuture<Channel> {
let channel = EmbeddedChannel(loop: loop as! EmbeddedEventLoop)
XCTAssertNoThrow(try channel.pipeline.add(name: CONNECT_RECORDER, handler: ConnectRecorder()).wait())
return loop.makeSucceededFuture(result: channel)
return loop.makeSucceededFuture(channel)
}
private func buildEyeballer(host: String,
@ -242,8 +242,8 @@ public class HappyEyeballsTest : XCTestCase {
return target
}
loop.run()
resolver.v6Promise.fail(error: DummyError())
resolver.v4Promise.succeed(result: SINGLE_IPv4_RESULT)
resolver.v6Promise.fail(DummyError())
resolver.v4Promise.succeed(SINGLE_IPv4_RESULT)
loop.run()
// No time should have needed to pass: we return only one target and it connects immediately.
@ -266,8 +266,8 @@ public class HappyEyeballsTest : XCTestCase {
return target
}
loop.run()
resolver.v4Promise.fail(error: DummyError())
resolver.v6Promise.succeed(result: SINGLE_IPv6_RESULT)
resolver.v4Promise.fail(DummyError())
resolver.v6Promise.succeed(SINGLE_IPv6_RESULT)
loop.run()
// No time should have needed to pass: we return only one target and it connects immediately.
@ -308,8 +308,8 @@ public class HappyEyeballsTest : XCTestCase {
// We now want to confirm that nothing awful happens if those DNS results
// return late.
resolver.v6Promise.succeed(result: SINGLE_IPv6_RESULT)
resolver.v4Promise.succeed(result: SINGLE_IPv4_RESULT)
resolver.v6Promise.succeed(SINGLE_IPv6_RESULT)
resolver.v4Promise.succeed(SINGLE_IPv4_RESULT)
loop.run()
XCTAssertEqual(resolver.events, expectedQueries + [.cancel])
}
@ -329,7 +329,7 @@ public class HappyEyeballsTest : XCTestCase {
XCTAssertEqual(resolver.events, expectedQueries)
XCTAssertFalse(targetFuture.isFulfilled)
resolver.v6Promise.succeed(result: SINGLE_IPv6_RESULT)
resolver.v6Promise.succeed(SINGLE_IPv6_RESULT)
loop.run()
// No time should have needed to pass: we return only one target and it connects immediately.
@ -341,7 +341,7 @@ public class HappyEyeballsTest : XCTestCase {
XCTAssertEqual(resolver.events, expectedQueries + [.cancel])
// Now return a result for the IPv4 query. Nothing bad should happen.
resolver.v4Promise.succeed(result: SINGLE_IPv4_RESULT)
resolver.v4Promise.succeed(SINGLE_IPv4_RESULT)
loop.run()
XCTAssertEqual(resolver.events, expectedQueries + [.cancel])
}
@ -361,7 +361,7 @@ public class HappyEyeballsTest : XCTestCase {
XCTAssertEqual(resolver.events, expectedQueries)
XCTAssertFalse(targetFuture.isFulfilled)
resolver.v4Promise.succeed(result: SINGLE_IPv4_RESULT)
resolver.v4Promise.succeed(SINGLE_IPv4_RESULT)
loop.run()
// There should have been no connection attempt yet.
@ -383,7 +383,7 @@ public class HappyEyeballsTest : XCTestCase {
XCTAssertEqual(resolver.events, expectedQueries + [.cancel])
// Now return a result for the IPv6 query. Nothing bad should happen.
resolver.v6Promise.succeed(result: SINGLE_IPv6_RESULT)
resolver.v6Promise.succeed(SINGLE_IPv6_RESULT)
loop.run()
XCTAssertEqual(resolver.events, expectedQueries + [.cancel])
}
@ -403,7 +403,7 @@ public class HappyEyeballsTest : XCTestCase {
XCTAssertEqual(resolver.events, expectedQueries)
XCTAssertFalse(targetFuture.isFulfilled)
resolver.v4Promise.succeed(result: SINGLE_IPv4_RESULT)
resolver.v4Promise.succeed(SINGLE_IPv4_RESULT)
loop.run()
// There should have been no connection attempt yet.
@ -411,7 +411,7 @@ public class HappyEyeballsTest : XCTestCase {
XCTAssertFalse(targetFuture.isFulfilled)
// Now the AAAA returns.
resolver.v6Promise.succeed(result: SINGLE_IPv6_RESULT)
resolver.v6Promise.succeed(SINGLE_IPv6_RESULT)
loop.run()
// The connection attempt should have been made with the IPv6 result.
@ -437,7 +437,7 @@ public class HappyEyeballsTest : XCTestCase {
XCTAssertEqual(resolver.events, expectedQueries)
XCTAssertFalse(targetFuture.isFulfilled)
resolver.v4Promise.succeed(result: SINGLE_IPv4_RESULT)
resolver.v4Promise.succeed(SINGLE_IPv4_RESULT)
loop.run()
// There should have been no connection attempt yet.
@ -445,7 +445,7 @@ public class HappyEyeballsTest : XCTestCase {
XCTAssertFalse(targetFuture.isFulfilled)
// Now the AAAA fails.
resolver.v6Promise.fail(error: DummyError())
resolver.v6Promise.fail(DummyError())
loop.run()
// The connection attempt should have been made with the IPv4 result.
@ -471,7 +471,7 @@ public class HappyEyeballsTest : XCTestCase {
XCTAssertEqual(resolver.events, expectedQueries)
XCTAssertFalse(targetFuture.isFulfilled)
resolver.v4Promise.succeed(result: SINGLE_IPv4_RESULT)
resolver.v4Promise.succeed(SINGLE_IPv4_RESULT)
loop.run()
// There should have been no connection attempt yet.
@ -479,7 +479,7 @@ public class HappyEyeballsTest : XCTestCase {
XCTAssertFalse(targetFuture.isFulfilled)
// Now the AAAA returns empty.
resolver.v6Promise.succeed(result: [])
resolver.v6Promise.succeed([])
loop.run()
// The connection attempt should have been made with the IPv4 result.
@ -501,8 +501,8 @@ public class HappyEyeballsTest : XCTestCase {
XCTAssertEqual(resolver.events, expectedQueries)
XCTAssertFalse(channelFuture.isFulfilled)
resolver.v4Promise.succeed(result: [])
resolver.v6Promise.succeed(result: [])
resolver.v4Promise.succeed([])
resolver.v6Promise.succeed([])
loop.run()
@ -534,8 +534,8 @@ public class HappyEyeballsTest : XCTestCase {
let v4Error = DummyError()
let v6Error = DummyError()
resolver.v4Promise.fail(error: v4Error)
resolver.v6Promise.fail(error: v6Error)
resolver.v4Promise.fail(v4Error)
resolver.v6Promise.fail(v6Error)
loop.run()
// We should have had queries for AAAA and A, with no cancel.
@ -578,8 +578,8 @@ public class HappyEyeballsTest : XCTestCase {
// We're providing the IPv4 and IPv6 results. This will lead to 20 total hosts
// for us to try to connect to.
resolver.v4Promise.succeed(result: MANY_IPv4_RESULTS)
resolver.v6Promise.succeed(result: MANY_IPv6_RESULTS)
resolver.v4Promise.succeed(MANY_IPv4_RESULTS)
resolver.v6Promise.succeed(MANY_IPv6_RESULTS)
for connectionCount in 1...20 {
XCTAssertEqual(channels.count, connectionCount)
@ -647,8 +647,8 @@ public class HappyEyeballsTest : XCTestCase {
// We're providing the IPv4 and IPv6 results. This will lead to 20 total hosts
// for us to try to connect to.
resolver.v4Promise.succeed(result: MANY_IPv4_RESULTS)
resolver.v6Promise.succeed(result: MANY_IPv6_RESULTS)
resolver.v4Promise.succeed(MANY_IPv4_RESULTS)
resolver.v6Promise.succeed(MANY_IPv6_RESULTS)
// Let all the connections fire.
for _ in 1...20 {
@ -716,7 +716,7 @@ public class HappyEyeballsTest : XCTestCase {
XCTAssertFalse(channelFuture.isFulfilled)
// Provide the IPv4 results and let five connection attempts play out.
resolver.v4Promise.succeed(result: MANY_IPv4_RESULTS)
resolver.v4Promise.succeed(MANY_IPv4_RESULTS)
loop.advanceTime(by: .milliseconds(50))
for connectionCount in 1...4 {
@ -726,7 +726,7 @@ public class HappyEyeballsTest : XCTestCase {
XCTAssertEqual(channels.last!.connectTarget()!, "10.0.0.5")
// Now the IPv6 results come in.
resolver.v6Promise.succeed(result: MANY_IPv6_RESULTS)
resolver.v6Promise.succeed(MANY_IPv6_RESULTS)
// The next 10 connection attempts will interleave the IPv6 and IPv4 results,
// starting with IPv6.
@ -757,7 +757,7 @@ public class HappyEyeballsTest : XCTestCase {
// Here the A result returns, but the timeout is sufficiently low that the connect attempt
// times out before the AAAA can return.
resolver.v4Promise.succeed(result: SINGLE_IPv4_RESULT)
resolver.v4Promise.succeed(SINGLE_IPv4_RESULT)
loop.advanceTime(by: .milliseconds(48))
XCTAssertFalse(channelFuture.isFulfilled)
@ -800,7 +800,7 @@ public class HappyEyeballsTest : XCTestCase {
// Here the A result returns, but the timeout is sufficiently low that the connect attempt
// times out before the AAAA can return and before the connection succeeds.
resolver.v4Promise.succeed(result: SINGLE_IPv4_RESULT)
resolver.v4Promise.succeed(SINGLE_IPv4_RESULT)
loop.advanceTime(by: .milliseconds(99))
XCTAssertFalse(channelFuture.isFulfilled)
XCTAssertEqual(channels.count, 1)
@ -845,7 +845,7 @@ public class HappyEyeballsTest : XCTestCase {
// Here the A result returns and a connection attempt is made. This fails, and we test that
// we wait for the AAAA query to come in before acting. That connection attempt then times out.
resolver.v4Promise.succeed(result: SINGLE_IPv4_RESULT)
resolver.v4Promise.succeed(SINGLE_IPv4_RESULT)
loop.advanceTime(by: .milliseconds(50))
XCTAssertFalse(channelFuture.isFulfilled)
XCTAssertEqual(channels.count, 1)
@ -856,7 +856,7 @@ public class HappyEyeballsTest : XCTestCase {
XCTAssertFalse(channelFuture.isFulfilled)
// Now the AAAA returns.
resolver.v6Promise.succeed(result: SINGLE_IPv6_RESULT)
resolver.v6Promise.succeed(SINGLE_IPv6_RESULT)
XCTAssertFalse(channelFuture.isFulfilled)
XCTAssertEqual(channels.count, 2)
XCTAssertEqual(channels.last!.state(), .idle)
@ -899,7 +899,7 @@ public class HappyEyeballsTest : XCTestCase {
XCTAssertFalse(channelFuture.isFulfilled)
// Provide the IPv6 results and let all 10 connection attempts play out.
resolver.v6Promise.succeed(result: MANY_IPv6_RESULTS)
resolver.v6Promise.succeed(MANY_IPv6_RESULTS)
for connectionCount in 1...10 {
XCTAssertEqual(channels.last!.connectTarget()!, "fe80::\(connectionCount)")
@ -913,7 +913,7 @@ public class HappyEyeballsTest : XCTestCase {
XCTAssertFalse(channelFuture.isFulfilled)
// Now the IPv4 results come in. Let all 10 connection attempts play out.
resolver.v4Promise.succeed(result: MANY_IPv4_RESULTS)
resolver.v4Promise.succeed(MANY_IPv4_RESULTS)
for connectionCount in 1...10 {
XCTAssertEqual(channels.last!.connectTarget()!, "10.0.0.\(connectionCount)")
loop.advanceTime(by: .milliseconds(250))
@ -946,7 +946,7 @@ public class HappyEyeballsTest : XCTestCase {
// Here the AAAA result returns, but the timeout is sufficiently low that the connect attempt
// times out before the A returns.
resolver.v6Promise.succeed(result: SINGLE_IPv6_RESULT)
resolver.v6Promise.succeed(SINGLE_IPv6_RESULT)
loop.advanceTime(by: .milliseconds(99))
XCTAssertFalse(channelFuture.isFulfilled)
XCTAssertEqual(channels.count, 1)
@ -991,7 +991,7 @@ public class HappyEyeballsTest : XCTestCase {
// Here the AAAA and A results return. We are going to fail the connections
// instantly, which should cause all 20 to appear.
resolver.v6Promise.succeed(result: MANY_IPv6_RESULTS)
resolver.v6Promise.succeed(MANY_IPv6_RESULTS)
for channelCount in 1...10 {
XCTAssertFalse(channelFuture.isFulfilled)
XCTAssertEqual(channels.count, channelCount)
@ -999,7 +999,7 @@ public class HappyEyeballsTest : XCTestCase {
channels.last?.failConnection(error: DummyError())
}
resolver.v4Promise.succeed(result: MANY_IPv4_RESULTS)
resolver.v4Promise.succeed(MANY_IPv4_RESULTS)
for channelCount in 11...20 {
XCTAssertFalse(channelFuture.isFulfilled)
XCTAssertEqual(channels.count, channelCount)
@ -1040,7 +1040,7 @@ public class HappyEyeballsTest : XCTestCase {
XCTAssertFalse(channelFuture.isFulfilled)
// Here the AAAA results return. Let all the connection attempts go out.
resolver.v6Promise.succeed(result: MANY_IPv6_RESULTS)
resolver.v6Promise.succeed(MANY_IPv6_RESULTS)
for channelCount in 1...10 {
XCTAssertEqual(channels.count, channelCount)
loop.advanceTime(by: .milliseconds(250))
@ -1077,7 +1077,7 @@ public class HappyEyeballsTest : XCTestCase {
XCTAssertFalse(channelFuture.isFulfilled)
// Return the IPv6 results and observe the channel creation attempts.
resolver.v6Promise.succeed(result: MANY_IPv6_RESULTS)
resolver.v6Promise.succeed(MANY_IPv6_RESULTS)
for channelCount in 1...10 {
XCTAssertEqual(ourChannelFutures.count, channelCount)
loop.advanceTime(by: .milliseconds(250))
@ -1087,19 +1087,19 @@ public class HappyEyeballsTest : XCTestCase {
// Succeed the first channel future, which will connect because the default
// channel builder always does.
defaultChannelBuilder(loop: loop, family: AF_INET6).whenSuccess {
ourChannelFutures.first!.succeed(result: $0)
ourChannelFutures.first!.succeed($0)
XCTAssertEqual($0.state(), .connected)
}
XCTAssertTrue(channelFuture.isFulfilled)
// Ok, now succeed the second channel future. This should cause the channel to immediately be closed.
defaultChannelBuilder(loop: loop, family: AF_INET6).whenSuccess {
ourChannelFutures[1].succeed(result: $0)
ourChannelFutures[1].succeed($0)
XCTAssertEqual($0.state(), .closed)
}
// Ok, now fail the third channel future. Nothing bad should happen here.
ourChannelFutures[2].fail(error: DummyError())
ourChannelFutures[2].fail(DummyError())
// Verify that the first channel is the one listed as connected.
XCTAssertTrue((try ourChannelFutures.first!.futureResult.wait()) === (try channelFuture.wait()))
@ -1109,7 +1109,7 @@ public class HappyEyeballsTest : XCTestCase {
var errors: [DummyError] = []
let (eyeballer, resolver, loop) = buildEyeballer(host: "example.com", port: 80) { loop, _ in
errors.append(DummyError())
return loop.makeFailedFuture(error: errors.last!)
return loop.makeFailedFuture(errors.last!)
}
let channelFuture = eyeballer.resolveAndConnect()
let expectedQueries: [DummyResolver.Event] = [
@ -1122,10 +1122,10 @@ public class HappyEyeballsTest : XCTestCase {
// Here the AAAA and A results return. We are going to fail the channel creation
// instantly, which should cause all 20 to appear.
resolver.v6Promise.succeed(result: MANY_IPv6_RESULTS)
resolver.v6Promise.succeed(MANY_IPv6_RESULTS)
XCTAssertEqual(errors.count, 10)
XCTAssertFalse(channelFuture.isFulfilled)
resolver.v4Promise.succeed(result: MANY_IPv4_RESULTS)
resolver.v4Promise.succeed(MANY_IPv4_RESULTS)
XCTAssertEqual(errors.count, 20)
XCTAssertTrue(channelFuture.isFulfilled)
@ -1160,7 +1160,7 @@ public class HappyEyeballsTest : XCTestCase {
XCTAssertFalse(channelFuture.isFulfilled)
// Here the AAAA results return. Let the first connection attempt go out.
resolver.v6Promise.succeed(result: MANY_IPv6_RESULTS)
resolver.v6Promise.succeed(MANY_IPv6_RESULTS)
XCTAssertEqual(channels.count, 1)
// Advance time by 250 ms.
@ -1209,7 +1209,7 @@ public class HappyEyeballsTest : XCTestCase {
XCTAssertFalse(channelFuture.isFulfilled)
// Here the A results return. Let the first connection attempt go out.
resolver.v4Promise.succeed(result: MANY_IPv4_RESULTS)
resolver.v4Promise.succeed(MANY_IPv4_RESULTS)
XCTAssertEqual(channels.count, 0)
// Advance time by 50 ms.

View File

@ -26,7 +26,7 @@ final class PromiseOnReadHandler: ChannelInboundHandler {
}
func channelRead(ctx: ChannelHandlerContext, data: NIOAny) {
self.promise.succeed(result: self.unwrapInboundIn(data))
self.promise.succeed(self.unwrapInboundIn(data))
_ = ctx.pipeline.remove(ctx: ctx)
}
}
@ -77,7 +77,7 @@ final class MulticastTest: XCTestCase {
let multicastAddress = try SocketAddress(ipAddress: multicastAddress, port: channel.localAddress!.port!)
return channel.joinGroup(multicastAddress, interface: interface).map { channel }
} catch {
return channel.eventLoop.makeFailedFuture(error: error)
return channel.eventLoop.makeFailedFuture(error)
}
}.flatMap { (channel: MulticastChannel) -> EventLoopFuture<MulticastChannel> in
let provider = channel as! SocketOptionProvider
@ -103,7 +103,7 @@ final class MulticastTest: XCTestCase {
return provider.setIPv6MulticastIF(CUnsignedInt(multicastInterface.interfaceIndex))
default:
XCTFail("Cannot join channel bound to \(sender.localAddress!) to interface at \(multicastInterface.address)")
return sender.eventLoop.makeFailedFuture(error: MulticastInterfaceMismatchError())
return sender.eventLoop.makeFailedFuture(MulticastInterfaceMismatchError())
}
}
@ -114,7 +114,7 @@ final class MulticastTest: XCTestCase {
let multicastAddress = try SocketAddress(ipAddress: multicastAddress, port: channel.localAddress!.port!)
return channel.leaveGroup(multicastAddress, interface: interface)
} catch {
return channel.eventLoop.makeFailedFuture(error: error)
return channel.eventLoop.makeFailedFuture(error)
}
}
@ -147,7 +147,7 @@ final class MulticastTest: XCTestCase {
// If we receive a datagram, or the reader promise fails, we must fail the timeoutPromise.
receivedMulticastDatagram.futureResult.map { (_: AddressedEnvelope<ByteBuffer>) in
timeoutPromise.fail(error: ReceivedDatagramError())
timeoutPromise.fail(ReceivedDatagramError())
}.cascadeFailure(promise: timeoutPromise)
var messageBuffer = sender.allocator.buffer(capacity: 24)
@ -159,7 +159,7 @@ final class MulticastTest: XCTestCase {
line: line
)
_ = multicastChannel.eventLoop.scheduleTask(in: timeout) { timeoutPromise.succeed(result: ()) }
_ = multicastChannel.eventLoop.scheduleTask(in: timeout) { timeoutPromise.succeed(()) }
XCTAssertNoThrow(try timeoutPromise.futureResult.wait(), file: file, line: line)
}

View File

@ -163,7 +163,7 @@ class NonBlockingFileIOTest: XCTestCase {
XCTAssertEqual(1, buf.readableBytes)
XCTAssertEqual(contentBytes[numCalls], buf.readBytes(length: 1)?.first!)
numCalls += 1
return self.eventLoop.makeSucceededFuture(result: ())
return self.eventLoop.makeSucceededFuture(())
}.wait()
}
XCTAssertEqual(content.utf8.count, numCalls)
@ -186,7 +186,7 @@ class NonBlockingFileIOTest: XCTestCase {
XCTAssertEqual(1, buf.readableBytes)
XCTAssertEqual(contentBytes[numCalls], buf.readBytes(length: 1)?.first!)
numCalls += 1
return self.eventLoop.makeFailedFuture(error: DummyError.dummy)
return self.eventLoop.makeFailedFuture(DummyError.dummy)
}.wait()
XCTFail("call successful but should've failed")
} catch let e as DummyError where e == .dummy {
@ -211,7 +211,7 @@ class NonBlockingFileIOTest: XCTestCase {
allocator: self.allocator,
eventLoop: self.eventLoop) { buf in
XCTFail("shouldn't have been called")
return self.eventLoop.makeSucceededFuture(result: ())
return self.eventLoop.makeSucceededFuture(())
}.wait()
XCTFail("call successful but should've failed")
} catch let e as IOError {
@ -240,7 +240,7 @@ class NonBlockingFileIOTest: XCTestCase {
XCTAssertEqual(1, buf.readableBytes)
XCTAssertEqual(expectedByte, buf.readBytes(length: 1)!.first!)
numCalls += 1
return self.eventLoop.makeSucceededFuture(result: ())
return self.eventLoop.makeSucceededFuture(())
}.wait()
}
XCTAssertEqual(content.utf8.count, numCalls)
@ -260,7 +260,7 @@ class NonBlockingFileIOTest: XCTestCase {
XCTAssertEqual(2, buf.readableBytes)
XCTAssertEqual(Array("\(numCalls*2)\(numCalls*2 + 1)".utf8), buf.readBytes(length: 2)!)
numCalls += 1
return self.eventLoop.makeSucceededFuture(result: ())
return self.eventLoop.makeSucceededFuture(())
}.wait()
}
XCTAssertEqual(content.utf8.count/2, numCalls)
@ -310,7 +310,7 @@ class NonBlockingFileIOTest: XCTestCase {
XCTAssertTrue(self.eventLoop.inEventLoop)
allBytesActual += buf.readString(length: buf.readableBytes) ?? "WRONG"
numCalls += 1
return self.eventLoop.makeSucceededFuture(result: ())
return self.eventLoop.makeSucceededFuture(())
}.wait()
}
XCTAssertEqual(allBytesExpected, allBytesActual)
@ -333,7 +333,7 @@ class NonBlockingFileIOTest: XCTestCase {
XCTAssertEqual(3, buf.readableBytes)
}
allBytes.append(buf.readString(length: buf.readableBytes) ?? "THIS IS WRONG")
return self.eventLoop.makeSucceededFuture(result: ())
return self.eventLoop.makeSucceededFuture(())
}
do {
@ -371,7 +371,7 @@ class NonBlockingFileIOTest: XCTestCase {
XCTAssertEqual(5, buf.readableBytes)
XCTAssertEqual("01234", buf.readString(length: buf.readableBytes) ?? "bad")
numCalls += 1
return self.eventLoop.makeSucceededFuture(result: ())
return self.eventLoop.makeSucceededFuture(())
}.wait()
}
XCTAssertEqual(1, numCalls)
@ -389,7 +389,7 @@ class NonBlockingFileIOTest: XCTestCase {
allocator: self.allocator,
eventLoop: self.eventLoop) { buf in
XCTFail("this shouldn't have been called")
return self.eventLoop.makeSucceededFuture(result: ())
return self.eventLoop.makeSucceededFuture(())
}.wait()
XCTFail("succeeded and shouldn't have")
} catch let e as IOError where e.errnoCode == ESPIPE {
@ -414,7 +414,7 @@ class NonBlockingFileIOTest: XCTestCase {
allocator: self.allocator,
eventLoop: self.eventLoop) { buf in
XCTFail("this shouldn't have been called")
return self.eventLoop.makeSucceededFuture(result: ())
return self.eventLoop.makeSucceededFuture(())
}.wait()
XCTFail("succeeded and shouldn't have")
} catch let e as NonBlockingFileIO.Error where e == NonBlockingFileIO.Error.descriptorSetToNonBlocking {
@ -445,7 +445,7 @@ class NonBlockingFileIOTest: XCTestCase {
XCTAssertEqual(1, buf.readableBytes)
XCTAssertEqual("9", buf.readString(length: buf.readableBytes) ?? "bad")
}
return self.eventLoop.makeSucceededFuture(result: ())
return self.eventLoop.makeSucceededFuture(())
}.wait()
}
XCTAssertEqual(2, numCalls)

View File

@ -156,7 +156,7 @@ class SelectorTest: XCTestCase {
XCTAssertTrue(self.hasReConnectEventLoopTickFinished.value)
XCTAssertTrue(self.didRead)
if !self.didRead {
self.didReadPromise.fail(error: DidNotReadError.didNotReadGotInactive)
self.didReadPromise.fail(DidNotReadError.didNotReadGotInactive)
ctx.close(promise: nil)
}
}
@ -171,7 +171,7 @@ class SelectorTest: XCTestCase {
XCTAssertEqual(1, buf.readableBytes)
XCTAssertEqual("H", buf.readString(length: 1)!)
self.didRead = true
self.didReadPromise.succeed(result: ())
self.didReadPromise.succeed(())
}
func channelReadComplete(ctx: ChannelHandlerContext) {
@ -180,7 +180,7 @@ class SelectorTest: XCTestCase {
XCTAssertTrue(self.hasReConnectEventLoopTickFinished.value)
XCTAssertTrue(self.didRead)
if !self.didRead {
self.didReadPromise.fail(error: DidNotReadError.didNotReadGotReadComplete)
self.didReadPromise.fail(DidNotReadError.didNotReadGotReadComplete)
ctx.close(promise: nil)
}
}

View File

@ -139,7 +139,7 @@ public class SocketChannelTest : XCTestCase {
func errorCaught(ctx: ChannelHandlerContext, error: Error) {
if let ioError = error as? IOError {
self.promise.succeed(result: ioError)
self.promise.succeed(ioError)
}
}
}
@ -207,7 +207,7 @@ public class SocketChannelTest : XCTestCase {
}
func channelActive(ctx: ChannelHandlerContext) {
promise.succeed(result: ())
promise.succeed(())
}
}
@ -224,7 +224,7 @@ public class SocketChannelTest : XCTestCase {
}
override func connect(to address: SocketAddress) throws -> Bool {
self.promise.succeed(result: ())
self.promise.succeed(())
return true
}
}
@ -436,7 +436,7 @@ public class SocketChannelTest : XCTestCase {
override func connect(to address: SocketAddress) throws -> Bool {
// We want to return false here to have a pending connect.
_ = try super.connect(to: address)
self.promise.succeed(result: ())
self.promise.succeed(())
return false
}
}
@ -514,7 +514,7 @@ public class SocketChannelTest : XCTestCase {
XCTAssertNil(ctx.localAddress)
XCTAssertNil(ctx.remoteAddress)
self.promise.succeed(result: ())
self.promise.succeed(())
}
}
}

View File

@ -127,7 +127,7 @@ final class ByteCountingHandler : ChannelInboundHandler {
func handlerAdded(ctx: ChannelHandlerContext) {
buffer = ctx.channel.allocator.buffer(capacity: numBytes)
if self.numBytes == 0 {
self.promise.succeed(result: buffer)
self.promise.succeed(buffer)
}
}
@ -136,7 +136,7 @@ final class ByteCountingHandler : ChannelInboundHandler {
buffer.write(buffer: &currentBuffer)
if buffer.readableBytes == numBytes {
promise.succeed(result: buffer)
promise.succeed(buffer)
}
}

View File

@ -127,7 +127,7 @@ class EndToEndTests: XCTestCase {
func testBasicUpgradeDance() throws {
let basicUpgrader = WebSocketUpgrader(shouldUpgrade: { head in HTTPHeaders() },
upgradePipelineHandler: { (channel, req) in channel.eventLoop.makeSucceededFuture(result: ()) })
upgradePipelineHandler: { (channel, req) in channel.eventLoop.makeSucceededFuture(()) })
let (loop, server, client) = createTestFixtures(upgraders: [basicUpgrader])
defer {
XCTAssertNoThrow(try client.finish())
@ -147,7 +147,7 @@ class EndToEndTests: XCTestCase {
func testUpgradeWithProtocolName() throws {
let basicUpgrader = WebSocketUpgrader(shouldUpgrade: { head in HTTPHeaders() },
upgradePipelineHandler: { (channel, req) in channel.eventLoop.makeSucceededFuture(result: ()) })
upgradePipelineHandler: { (channel, req) in channel.eventLoop.makeSucceededFuture(()) })
let (loop, server, client) = createTestFixtures(upgraders: [basicUpgrader])
defer {
XCTAssertNoThrow(try client.finish())
@ -169,7 +169,7 @@ class EndToEndTests: XCTestCase {
let basicUpgrader = WebSocketUpgrader(shouldUpgrade: { head in nil },
upgradePipelineHandler: { (channel, req) in
XCTFail("Should not have called")
return channel.eventLoop.makeSucceededFuture(result: ())
return channel.eventLoop.makeSucceededFuture(())
}
)
let (loop, server, client) = createTestFixtures(upgraders: [basicUpgrader])
@ -199,7 +199,7 @@ class EndToEndTests: XCTestCase {
func testRequiresVersion13() throws {
let basicUpgrader = WebSocketUpgrader(shouldUpgrade: { head in HTTPHeaders() },
upgradePipelineHandler: { (channel, req) in channel.eventLoop.makeSucceededFuture(result: ()) })
upgradePipelineHandler: { (channel, req) in channel.eventLoop.makeSucceededFuture(()) })
let (loop, server, client) = createTestFixtures(upgraders: [basicUpgrader])
defer {
XCTAssertNoThrow(try client.finish())
@ -227,7 +227,7 @@ class EndToEndTests: XCTestCase {
func testRequiresVersionHeader() throws {
let basicUpgrader = WebSocketUpgrader(shouldUpgrade: { head in HTTPHeaders() },
upgradePipelineHandler: { (channel, req) in channel.eventLoop.makeSucceededFuture(result: ()) })
upgradePipelineHandler: { (channel, req) in channel.eventLoop.makeSucceededFuture(()) })
let (loop, server, client) = createTestFixtures(upgraders: [basicUpgrader])
defer {
XCTAssertNoThrow(try client.finish())
@ -255,7 +255,7 @@ class EndToEndTests: XCTestCase {
func testRequiresKeyHeader() throws {
let basicUpgrader = WebSocketUpgrader(shouldUpgrade: { head in HTTPHeaders() },
upgradePipelineHandler: { (channel, req) in channel.eventLoop.makeSucceededFuture(result: ()) })
upgradePipelineHandler: { (channel, req) in channel.eventLoop.makeSucceededFuture(()) })
let (loop, server, client) = createTestFixtures(upgraders: [basicUpgrader])
defer {
XCTAssertNoThrow(try client.finish())
@ -287,7 +287,7 @@ class EndToEndTests: XCTestCase {
hdrs.add(name: "TestHeader", value: "TestValue")
return hdrs
},
upgradePipelineHandler: { (channel, req) in channel.eventLoop.makeSucceededFuture(result: ()) })
upgradePipelineHandler: { (channel, req) in channel.eventLoop.makeSucceededFuture(()) })
let (loop, server, client) = createTestFixtures(upgraders: [upgrader])
defer {
XCTAssertNoThrow(try client.finish())
@ -313,7 +313,7 @@ class EndToEndTests: XCTestCase {
hdrs.add(name: "Target", value: path)
return hdrs
},
upgradePipelineHandler: { (channel, req) in channel.eventLoop.makeSucceededFuture(result: ()) })
upgradePipelineHandler: { (channel, req) in channel.eventLoop.makeSucceededFuture(()) })
}
let first = buildHandler(path: "first")
let second = buildHandler(path: "second")
@ -379,7 +379,7 @@ class EndToEndTests: XCTestCase {
func testMaxFrameSize() throws {
let basicUpgrader = WebSocketUpgrader(maxFrameSize: 16, shouldUpgrade: { head in HTTPHeaders() },
upgradePipelineHandler: { (channel, req) in
return channel.eventLoop.makeSucceededFuture(result: ())
return channel.eventLoop.makeSucceededFuture(())
})
let (loop, server, client) = createTestFixtures(upgraders: [basicUpgrader])
defer {

View File

@ -9,7 +9,7 @@
- `ByteToMessageDecoder`s now need to be wrapped in `ByteToMessageHandler`
before they can be added to the pipeline.
before: `pipeline.add(MyDecoder())`, after: `pipeline.add(ByteToMessageHandler(MyDecoder()))`
- `EventLoop.makePromise`/`makeSucceededFuture`/`makeFailedFuture` instead of `new*`
- `EventLoop.makePromise`/`makeSucceededFuture`/`makeFailedFuture` instead of `new*`, also `result:`/`error:` labels dropped
- `SocketAddress.makeAddressResolvingHost(:port:)` instead of
`SocketAddress.newAddressResolving(host:port:)`
- changed all ports to `Int` (from `UInt16`)
@ -33,3 +33,6 @@
- renamed `EventLoopFuture.thenIfError` to `EventLoopFuture.flatMapError`
- renamed `EventLoopFuture.thenThrowing` to `EventLoopFuture.flatMapThrowing`
- renamed `EventLoopFuture`'s generic parameter from `T` to `Value`
- renamed `EventLoopFuture.and(result:)` to `EventLoopFuture.and(value:)`
- `EventLoopPromise.succeed(result: Value)` lost its label so is now `EventLoopPromise.succeed(Value)`
- `EventLoopPromise.fail(error: Error)` lost its label so is now `EventLoopPromise.fail(Error)`