30 lines
920 B
Go
30 lines
920 B
Go
|
package Shutdown
|
||
|
|
||
|
import "os"
|
||
|
import "github.com/SommerEngineering/Ocean/Log"
|
||
|
import LM "github.com/SommerEngineering/Ocean/Log/Meta"
|
||
|
|
||
|
type ShutdownHandler interface {
|
||
|
Shutdown()
|
||
|
}
|
||
|
|
||
|
func AddShutdownHandler(handler ShutdownHandler) {
|
||
|
shutdownHandlers.PushBack(handler)
|
||
|
}
|
||
|
|
||
|
func executeShutdown() {
|
||
|
sig := <-shutdownSignal
|
||
|
stopAllRequests = true
|
||
|
|
||
|
Log.LogFull(senderName, LM.CategorySYSTEM, LM.LevelWARN, LM.SeverityCritical, LM.ImpactCritical, LM.MessageNameSHUTDOWN, `The system was called to shutting down.`, sig.String(), `Call now all shutdown handlers.`)
|
||
|
for handler := shutdownHandlers.Front(); handler != nil; handler = handler.Next() {
|
||
|
h := handler.Value.(ShutdownHandler)
|
||
|
h.Shutdown()
|
||
|
}
|
||
|
|
||
|
Log.LogFull(senderName, LM.CategorySYSTEM, LM.LevelWARN, LM.SeverityCritical, LM.ImpactCritical, LM.MessageNameSHUTDOWN, `The system is shutting down now.`)
|
||
|
Log.Flush()
|
||
|
|
||
|
os.Exit(6)
|
||
|
}
|