1
0
Fork 0
mirror of https://github.com/eosswedenorg/antelope-api-healthcheck synced 2026-06-16 04:44:55 +02:00
antelope-api-healthcheck/internal/server/server.go

64 lines
1.4 KiB
Go

package server
import (
"strings"
"github.com/eosswedenorg-go/haproxy/agentcheck"
"github.com/eosswedenorg-go/tcp_server"
"github.com/eosswedenorg/eosio-api-healthcheck/internal/api"
log "github.com/inconshreveable/log15"
)
// onTcpMessage callback function
// ---------------------------------------------------------
func onTcpMessage(c *tcp_server.Client, args string) {
logger := log.Root()
// Check api.
// -------------------
healthCheckApi, err := ParseRequest(args)
if err != nil {
logger.Warn("Agent request error", "message", err)
resp := agentcheck.NewStatusMessageResponse(agentcheck.Failed, "")
_, err = c.WriteString(resp.String())
if err != nil {
logger.Error("WriteString", "message", err)
}
c.Close()
return
}
status, msg := healthCheckApi.Call()
params := api.LogParams{}
params.Add("status", strings.TrimSpace(status.String()))
if msg != "OK" && len(msg) > 0 {
params.Add("error", msg)
}
logger.Info("API Check", params.Combine(healthCheckApi.LogInfo())...)
// Report status to HAproxy
_, err = c.WriteString(status.String())
if err != nil {
logger.Error("WriteString", "message", err)
}
c.Close()
}
// Start
// ---------------------------------------------------------
func Start(addr string) error {
server := tcp_server.New(addr)
server.OnMessage(onTcpMessage)
err := server.Connect()
if err == nil {
err = server.Listen()
}
return err
}