feature: Refactors backend runtime's communication mechanism to be more stable.

This commit is contained in:
Tera << 8 2025-01-06 01:24:11 -05:00
parent 93f2f9cbee
commit 1e1a330a4b
Signed by: imterah
GPG key ID: 8FA7DD57BA6CEA37
10 changed files with 254 additions and 157 deletions

View file

@ -125,16 +125,13 @@ func CreateBackend(c *gin.Context) {
return
}
backend.RuntimeCommands <- &commonbackend.CheckServerParameters{
backendParamCheckResponse, err := backend.ProcessCommand(&commonbackend.CheckServerParameters{
Type: "checkServerParameters",
Arguments: backendParameters,
}
})
backendParamCheckResponse := <-backend.RuntimeCommands
switch responseMessage := backendParamCheckResponse.(type) {
case error:
log.Warnf("Failed to get response for backend: %s", responseMessage.Error())
if err != nil {
log.Warnf("Failed to get response for backend: %s", err.Error())
err = backend.Stop()
@ -147,6 +144,9 @@ func CreateBackend(c *gin.Context) {
})
return
}
switch responseMessage := backendParamCheckResponse.(type) {
case *commonbackend.CheckParametersResponse:
if responseMessage.InResponseTo != "checkServerParameters" {
log.Errorf("Got illegal response to CheckServerParameters: %s", responseMessage.InResponseTo)
@ -215,16 +215,13 @@ func CreateBackend(c *gin.Context) {
return
}
backend.RuntimeCommands <- &commonbackend.Start{
backendStartResponse, err := backend.ProcessCommand(&commonbackend.Start{
Type: "start",
Arguments: backendParameters,
}
})
backendStartResponse := <-backend.RuntimeCommands
switch responseMessage := backendStartResponse.(type) {
case error:
log.Warnf("Failed to get response for backend: %s", responseMessage.Error())
if err != nil {
log.Warnf("Failed to get response for backend: %s", err.Error())
err = backend.Stop()
@ -237,6 +234,9 @@ func CreateBackend(c *gin.Context) {
})
return
}
switch responseMessage := backendStartResponse.(type) {
case *commonbackend.BackendStatusResponse:
if !responseMessage.IsRunning {
err = backend.Stop()