From a08dc4f175b27422366ccb9e82dee23a8ccd84ad Mon Sep 17 00:00:00 2001 From: Christoph Hagen Date: Wed, 6 Dec 2023 10:02:43 +0100 Subject: [PATCH] Simplify scheduler --- Sources/App/EventLoopScheduler.swift | 32 ++++------------------------ Sources/App/configure.swift | 3 ++- 2 files changed, 6 insertions(+), 29 deletions(-) diff --git a/Sources/App/EventLoopScheduler.swift b/Sources/App/EventLoopScheduler.swift index 3997c05..69ade3f 100644 --- a/Sources/App/EventLoopScheduler.swift +++ b/Sources/App/EventLoopScheduler.swift @@ -1,34 +1,10 @@ import Foundation -import Clairvoyant import Vapor -import NIOCore +import Clairvoyant -final class EventLoopScheduler { +extension MultiThreadedEventLoopGroup: AsyncScheduler { - private let backgroundGroup: EventLoopGroup - - init(numberOfThreads: Int = 2) { - backgroundGroup = MultiThreadedEventLoopGroup(numberOfThreads: numberOfThreads) - } - - func next() -> EventLoop { - backgroundGroup.next() - } - - func provider() -> NIOEventLoopGroupProvider { - return .shared(backgroundGroup) - } - - func shutdown() { - backgroundGroup.shutdownGracefully { _ in - - } - } -} - -extension EventLoopScheduler: AsyncScheduler { - - func schedule(asyncJob: @escaping @Sendable () async throws -> Void) { - _ = backgroundGroup.any().makeFutureWithTask(asyncJob) + public func schedule(asyncJob: @escaping @Sendable () async throws -> Void) { + _ = any().makeFutureWithTask(asyncJob) } } diff --git a/Sources/App/configure.swift b/Sources/App/configure.swift index a49e83c..5f93939 100644 --- a/Sources/App/configure.swift +++ b/Sources/App/configure.swift @@ -8,7 +8,7 @@ var server: SQLiteDatabase! private var provider: VaporMetricProvider! = nil private var status: Metric! -private let scheduler = EventLoopScheduler() +private let scheduler = MultiThreadedEventLoopGroup(numberOfThreads: 2) private var configurationError: Error? = nil func configure(_ app: Application) async throws { @@ -77,6 +77,7 @@ func configure(_ app: Application) async throws { func shutdown() { scheduler.schedule { await server.disconnectAllSockets() + try await scheduler.shutdownGracefully() } }