Initial commit of Ocean's local development
This commit is contained in:
1 parent
9944a9e1df
commit
86451938ec
116 files changed
+3320
No files matched your search
@@ -0,0 +1,8 @@
|
||||
package System
|
||||
|
||||
import "github.com/SommerEngineering/Ocean/Log"
|
||||
import LM "github.com/SommerEngineering/Ocean/Log/Meta"
|
||||
|
||||
func icccSystemStart(data map[string][]string) {
|
||||
Log.LogShort(senderName, LM.CategorySYSTEM, LM.LevelINFO, LM.MessageNameSTARTUP, `The system is now up and ready.`)
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
package System
|
||||
|
||||
import "fmt"
|
||||
import "runtime"
|
||||
import "strconv"
|
||||
import "github.com/SommerEngineering/Ocean/ICCC"
|
||||
import "github.com/SommerEngineering/Ocean/Shutdown"
|
||||
import "github.com/SommerEngineering/Ocean/ConfigurationDB"
|
||||
import "github.com/SommerEngineering/Ocean/CustomerDB"
|
||||
import "github.com/SommerEngineering/Ocean/NumGen"
|
||||
import "github.com/SommerEngineering/Ocean/Log"
|
||||
import LM "github.com/SommerEngineering/Ocean/Log/Meta"
|
||||
|
||||
func initSystem() {
|
||||
|
||||
Log.LogShort(senderName, LM.CategorySYSTEM, LM.LevelINFO, LM.MessageNameSTARTUP, `The system is now starting.`)
|
||||
|
||||
// Set the desired amount of CPUs:
|
||||
utilizeCPUs := 2
|
||||
if value, err := strconv.Atoi(ConfigurationDB.Read(`OceanUtilizeCPUs`)); err != nil {
|
||||
Log.LogFull(senderName, LM.CategorySYSTEM, LM.LevelERROR, LM.SeverityCritical, LM.ImpactUnknown, LM.MessageNameCONFIGURATION, `Was not able to read the OceanUtilizeCPUs configuration.`, `Use the default value instead.`)
|
||||
} else {
|
||||
utilizeCPUs = value
|
||||
}
|
||||
|
||||
runtime.GOMAXPROCS(utilizeCPUs)
|
||||
Log.LogShort(senderName, LM.CategorySYSTEM, LM.LevelINFO, LM.MessageNameCONFIGURATION, `Configuration OceanUtilizeCPUs is set.`, fmt.Sprintf(`value=%d`, utilizeCPUs))
|
||||
|
||||
// Apply all desired logging devices:
|
||||
initLoggingDevices()
|
||||
|
||||
// Set the logging buffer size:
|
||||
logBufferSize := 500
|
||||
if value, err := strconv.Atoi(ConfigurationDB.Read(`LogBufferSize`)); err != nil {
|
||||
Log.LogFull(senderName, LM.CategorySYSTEM, LM.LevelERROR, LM.SeverityCritical, LM.ImpactUnknown, LM.MessageNameCONFIGURATION, `Was not able to read the LogBufferSize configuration.`, `Use the default value instead.`)
|
||||
} else {
|
||||
logBufferSize = value
|
||||
}
|
||||
|
||||
Log.SetBufferSize(logBufferSize)
|
||||
Log.LogShort(senderName, LM.CategorySYSTEM, LM.LevelINFO, LM.MessageNameCONFIGURATION, `Configuration LogBufferSize is set.`, fmt.Sprintf(`value=%d`, logBufferSize))
|
||||
|
||||
// Set the logging device delay (number of events):
|
||||
logDeviceDelayNumberEvents := 600
|
||||
if value, err := strconv.Atoi(ConfigurationDB.Read(`LogDeviceDelayNumberEvents`)); err != nil {
|
||||
Log.LogFull(senderName, LM.CategorySYSTEM, LM.LevelERROR, LM.SeverityCritical, LM.ImpactUnknown, LM.MessageNameCONFIGURATION, `Was not able to read the LogDeviceDelayNumberEvents configuration.`, `Use the default value instead.`)
|
||||
} else {
|
||||
logDeviceDelayNumberEvents = value
|
||||
}
|
||||
|
||||
Log.SetDeviceDelayNumberEvents(logDeviceDelayNumberEvents)
|
||||
Log.LogShort(senderName, LM.CategorySYSTEM, LM.LevelINFO, LM.MessageNameCONFIGURATION, `Configuration LogDeviceDelayNumberEvents is set.`, fmt.Sprintf(`value=%d`, logDeviceDelayNumberEvents))
|
||||
|
||||
// Set the logging device delay time to flush (seconds):
|
||||
logDeviceDelayTime2FlushSeconds := 5
|
||||
if value, err := strconv.Atoi(ConfigurationDB.Read(`LogDeviceDelayTime2FlushSeconds`)); err != nil {
|
||||
Log.LogFull(senderName, LM.CategorySYSTEM, LM.LevelERROR, LM.SeverityCritical, LM.ImpactUnknown, LM.MessageNameCONFIGURATION, `Was not able to read the LogDeviceDelayTime2FlushSeconds configuration.`, `Use the default value instead.`)
|
||||
} else {
|
||||
logDeviceDelayTime2FlushSeconds = value
|
||||
}
|
||||
|
||||
Log.SetDeviceDelayTimeoutSeconds(logDeviceDelayTime2FlushSeconds)
|
||||
Log.LogShort(senderName, LM.CategorySYSTEM, LM.LevelINFO, LM.MessageNameCONFIGURATION, `Configuration LogDeviceDelayTime2FlushSeconds is set.`, fmt.Sprintf(`value=%d`, logDeviceDelayTime2FlushSeconds))
|
||||
|
||||
// Set the logging timeout (seconds):
|
||||
logTimeoutSeconds := 3
|
||||
if value, err := strconv.Atoi(ConfigurationDB.Read(`LogTimeoutSeconds`)); err != nil {
|
||||
Log.LogFull(senderName, LM.CategorySYSTEM, LM.LevelERROR, LM.SeverityCritical, LM.ImpactUnknown, LM.MessageNameCONFIGURATION, `Was not able to read the LogTimeoutSeconds configuration.`, `Use the default value instead.`)
|
||||
} else {
|
||||
logTimeoutSeconds = value
|
||||
}
|
||||
|
||||
Log.SetTimeoutSeconds(logTimeoutSeconds)
|
||||
Log.LogShort(senderName, LM.CategorySYSTEM, LM.LevelINFO, LM.MessageNameCONFIGURATION, `Configuration LogTimeoutSeconds is set.`, fmt.Sprintf(`value=%d`, logTimeoutSeconds))
|
||||
|
||||
// Apply these changes:
|
||||
Log.ApplyConfigurationChanges()
|
||||
Log.LoggingIsReady()
|
||||
|
||||
// Register all system shutdown handlers:
|
||||
Shutdown.InitShutdown()
|
||||
Shutdown.AddShutdownHandler(ICCC.ShutdownFunction{})
|
||||
Shutdown.AddShutdownHandler(NumGen.ShutdownFunction{})
|
||||
Shutdown.AddShutdownHandler(ConfigurationDB.ShutdownFunction{})
|
||||
Shutdown.AddShutdownHandler(CustomerDB.ShutdownFunction{})
|
||||
// The logging subsystem is not registered here, because it will be automated called at the end
|
||||
|
||||
// Register all system ICCC commands:
|
||||
ICCC.Registrar(ICCC.ChannelSYSTEM, `System::Start`, icccSystemStart)
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package System
|
||||
|
||||
import "net/http"
|
||||
import "github.com/SommerEngineering/Ocean/ICCC"
|
||||
import "github.com/SommerEngineering/Ocean/WebContent"
|
||||
import "github.com/SommerEngineering/Ocean/StaticFiles"
|
||||
import "github.com/SommerEngineering/Ocean/NumGen"
|
||||
import "github.com/SommerEngineering/Ocean/Robots"
|
||||
import "github.com/SommerEngineering/Ocean/ConfigurationDB"
|
||||
import "github.com/SommerEngineering/Ocean/Log"
|
||||
import LM "github.com/SommerEngineering/Ocean/Log/Meta"
|
||||
|
||||
func InitHandlers() {
|
||||
|
||||
initSystem()
|
||||
Log.LogShort(senderName, LM.CategorySYSTEM, LM.LevelINFO, LM.MessageNameSTARTUP, `Register now all system handlers.`)
|
||||
|
||||
http.HandleFunc(`/framework/`, WebContent.HandlerDeliverFramework)
|
||||
http.HandleFunc(`/staticFiles/`, StaticFiles.HandlerStaticFiles)
|
||||
http.HandleFunc(`/next/number`, NumGen.HandlerGetNext)
|
||||
http.HandleFunc(`/robots.txt`, Robots.HandlerRobots)
|
||||
http.HandleFunc(`/ICCC`, ICCC.ICCCHandler)
|
||||
|
||||
if ConfigurationDB.Read(`MapStaticFiles2Root`) == "true" {
|
||||
Log.LogShort(senderName, LM.CategorySYSTEM, LM.LevelINFO, LM.MessageNameSTARTUP, `The static files are mapped to the root.`)
|
||||
http.HandleFunc(`/`, StaticFiles.HandlerMapStaticFiles2Root)
|
||||
}
|
||||
|
||||
Log.LogShort(senderName, LM.CategorySYSTEM, LM.LevelINFO, LM.MessageNameSTARTUP, `Done with registering all system handler.`)
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package System
|
||||
|
||||
import "github.com/SommerEngineering/Ocean/Log/DeviceConsole"
|
||||
import "github.com/SommerEngineering/Ocean/Log/DeviceDatabase"
|
||||
import "github.com/SommerEngineering/Ocean/ConfigurationDB"
|
||||
import "github.com/SommerEngineering/Ocean/Log"
|
||||
import LM "github.com/SommerEngineering/Ocean/Log/Meta"
|
||||
|
||||
func initLoggingDevices() {
|
||||
|
||||
Log.LogShort(senderName, LM.CategorySYSTEM, LM.LevelINFO, LM.MessageNameINIT, `Init the logging devices.`)
|
||||
defer Log.LogShort(senderName, LM.CategorySYSTEM, LM.LevelINFO, LM.MessageNameINIT, `Init the logging devices done.`)
|
||||
|
||||
if ConfigurationDB.Read(`LogUseDatabaseLogging`) == `true` {
|
||||
Log.LogShort(senderName, LM.CategorySYSTEM, LM.LevelINFO, LM.MessageNameCONFIGURATION, `The database logger is active.`)
|
||||
activateDatabaseLogger()
|
||||
} else {
|
||||
Log.LogShort(senderName, LM.CategorySYSTEM, LM.LevelINFO, LM.MessageNameCONFIGURATION, `The database logger is NOT active.`)
|
||||
}
|
||||
|
||||
if ConfigurationDB.Read(`LogUseConsoleLogging`) == `true` {
|
||||
Log.LogShort(senderName, LM.CategorySYSTEM, LM.LevelINFO, LM.MessageNameCONFIGURATION, `The console logger is active.`)
|
||||
activateConsoleLogger()
|
||||
} else {
|
||||
Log.LogShort(senderName, LM.CategorySYSTEM, LM.LevelINFO, LM.MessageNameCONFIGURATION, `The console logger is NOT active.`)
|
||||
}
|
||||
}
|
||||
|
||||
func activateDatabaseLogger() {
|
||||
DeviceDatabase.ActivateLoggingDevice()
|
||||
}
|
||||
|
||||
func activateConsoleLogger() {
|
||||
DeviceConsole.ActivateLoggingDevice()
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package System
|
||||
|
||||
import "net/http"
|
||||
import "github.com/SommerEngineering/Ocean/ConfigurationDB"
|
||||
import "github.com/SommerEngineering/Ocean/ICCC"
|
||||
import "github.com/SommerEngineering/Ocean/Log"
|
||||
import LM "github.com/SommerEngineering/Ocean/Log/Meta"
|
||||
|
||||
func StartAndBlockForever() {
|
||||
oceanHostnameAndPort := ConfigurationDB.Read(`OceanHostnameAndPort`)
|
||||
|
||||
// Init ICCC:
|
||||
ICCC.WriteMessage2All(ICCC.ChannelSYSTEM, `System::Start`, nil)
|
||||
|
||||
// Start and block:
|
||||
Log.LogShort(senderName, LM.CategorySYSTEM, LM.LevelINFO, LM.MessageNameSTARTUP, `Web server is now listening.`, `Configuration for hostname and port.`, oceanHostnameAndPort)
|
||||
http.ListenAndServe(oceanHostnameAndPort, nil)
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package System
|
||||
|
||||
import LM "github.com/SommerEngineering/Ocean/Log/Meta"
|
||||
|
||||
var (
|
||||
senderName LM.Sender = `System::System`
|
||||
)
|
||||
Reference in new issue
Block a user