Close all sockets on shutdown
This commit is contained in:
parent
707c6d03de
commit
89007989e3
@ -174,4 +174,8 @@ final class SQLiteDatabase {
|
||||
}
|
||||
return tables.play(card: card, player: player)
|
||||
}
|
||||
|
||||
func disconnectAllSockets() {
|
||||
tables.disconnectAllSockets()
|
||||
}
|
||||
}
|
||||
|
@ -199,4 +199,8 @@ final class TableManagement {
|
||||
// TODO: Save new table
|
||||
return .success
|
||||
}
|
||||
|
||||
func disconnectAllSockets() {
|
||||
tables.values.forEach { $0.disconnectAllPlayers() }
|
||||
}
|
||||
}
|
||||
|
@ -124,6 +124,10 @@ extension AbstractTable: ManageableTable {
|
||||
return
|
||||
}
|
||||
|
||||
func disconnectAllPlayers() {
|
||||
players.forEach { $0.disconnect() }
|
||||
}
|
||||
|
||||
func sendUpdateToAllPlayers() {
|
||||
players.enumerated().forEach { playerIndex, player in
|
||||
guard player.isConnected else {
|
||||
|
@ -31,4 +31,6 @@ protocol ManageableTable {
|
||||
func disconnect(player name: PlayerName)
|
||||
|
||||
func sendUpdateToAllPlayers()
|
||||
|
||||
func disconnectAllPlayers()
|
||||
}
|
||||
|
@ -33,6 +33,13 @@ public func configure(_ app: Application) throws {
|
||||
let db = app.databases.database(.sqlite, logger: .init(label: "Init"), on: app.databases.eventLoopGroup.next())!
|
||||
server = try SQLiteDatabase(db: db)
|
||||
|
||||
// Gracefully shut down by closing potentially open socket
|
||||
DispatchQueue.global(qos: .utility).asyncAfter(deadline: .now() + .seconds(5)) {
|
||||
_ = app.server.onShutdown.always { _ in
|
||||
server.disconnectAllSockets()
|
||||
}
|
||||
}
|
||||
|
||||
// register routes
|
||||
try routes(app)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user