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.
|
|
|
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()
|
|
|
|
}
|
|
|
|
}
|