2015-06-21 19:28:39 +00:00
package ICCC
import (
"fmt"
"github.com/SommerEngineering/Ocean/ICCC/SystemMessages"
"github.com/SommerEngineering/Ocean/Log"
LM "github.com/SommerEngineering/Ocean/Log/Meta"
)
2015-07-10 12:36:47 +00:00
// The receiver function for the ICCC message, that registers a listener.
func ICCCRegisterListenerReceiver ( data map [ string ] [ ] string ) ( result map [ string ] [ ] string ) {
2015-06-21 19:28:39 +00:00
// Recover from errors:
defer func ( ) {
if err := recover ( ) ; err != nil {
2015-07-10 12:36:47 +00:00
Log . LogFull ( senderName , LM . CategorySYSTEM , LM . LevelERROR , LM . SeverityUnknown , LM . ImpactUnknown , LM . MessageNamePARSE , "Was not able to execute the ICCC register listener message." )
2015-06-21 19:28:39 +00:00
result = make ( map [ string ] [ ] string , 0 )
return
}
} ( )
// Converts the HTTP form data into an object:
_ , _ , obj := Data2Message ( SystemMessages . ICCCRegisterListener { } , data )
// Was it possible to convert the data?
if obj != nil {
// Cast the object to the right type:
messageData := obj . ( SystemMessages . ICCCRegisterListener )
// Provide a log entry:
2015-07-10 12:36:47 +00:00
Log . LogShort ( senderName , LM . CategorySYSTEM , LM . LevelINFO , LM . MessageNameSTARTUP , ` ICCC message: Should register another listener. ` , ` channel= ` + messageData . Channel , ` command= ` + messageData . Command , ` IPAddressPort= ` + messageData . IPAddressPort , fmt . Sprintf ( ` isActive=%v ` , messageData . IsActive ) )
2015-06-21 19:28:39 +00:00
// Execute the command:
2015-07-10 12:36:47 +00:00
registerListener2Database ( messageData . Channel , messageData . Command , messageData . IPAddressPort , messageData . IsActive )
// Update the caches:
InitCacheNow ( )
2015-06-21 19:28:39 +00:00
// An answer is necessary:
return Message2Data ( ` ` , ` ` , SystemMessages . AnswerACK )
} else {
Log . LogShort ( senderName , LM . CategorySYSTEM , LM . LevelINFO , LM . MessageNameSTARTUP , ` ICCC message: Was not able to create the message. ` )
}
// In any other error case:
result = make ( map [ string ] [ ] string , 0 )
return
}