2014-04-26 09:18:56 +00:00
package Shutdown
2014-10-19 17:19:11 +00:00
import (
"github.com/SommerEngineering/Ocean/Log"
LM "github.com/SommerEngineering/Ocean/Log/Meta"
"os"
)
2014-04-26 09:18:56 +00:00
type ShutdownHandler interface {
Shutdown ( )
}
func AddShutdownHandler ( handler ShutdownHandler ) {
2014-06-04 19:41:18 +00:00
shutdownHandlers . PushFront ( handler )
2014-04-26 09:18:56 +00:00
}
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 )
}