You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
1.3 KiB
36 lines
1.3 KiB
import Vapor |
|
import Logging |
|
import NIOCore |
|
import NIOPosix |
|
|
|
@main |
|
enum Entrypoint { |
|
static func main() async throws { |
|
var env = try Environment.detect() |
|
try LoggingSystem.bootstrap(from: &env) |
|
|
|
let app = try await Application.make(env) |
|
|
|
#if DEBUG |
|
app.logger.logLevel = .debug |
|
#endif |
|
|
|
// This attempts to install NIO as the Swift Concurrency global executor. |
|
// You can enable it if you'd like to reduce the amount of context switching between NIO and Swift Concurrency. |
|
// Note: this has caused issues with some libraries that use `.wait()` and cleanly shutting down. |
|
// If enabled, you should be careful about calling async functions before this point as it can cause assertion failures. |
|
// let executorTakeoverSuccess = NIOSingletons.unsafeTryInstallSingletonPosixEventLoopGroupAsConcurrencyGlobalExecutor() |
|
// app.logger.debug("Tried to install SwiftNIO's EventLoopGroup as Swift's global concurrency executor", metadata: ["success": .stringConvertible(executorTakeoverSuccess)]) |
|
|
|
do { |
|
try await configure(app) |
|
} catch { |
|
app.logger.report(error: error) |
|
try? await app.asyncShutdown() |
|
throw error |
|
} |
|
|
|
try await app.execute() |
|
try await app.asyncShutdown() |
|
} |
|
}
|
|
|