File size: 563 Bytes
1f10f31 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | package common
import (
"errors"
"log/slog"
"net/http"
"github.com/oklog/run"
)
// Runner is a helper struct that runs a group of services.
type Runner struct {
Group run.Group
Logger *slog.Logger
}
func (r Runner) Run() {
err := r.Group.Run(run.WithReverseShutdownOrder())
if e := &(run.SignalError{}); errors.As(err, &e) {
r.Logger.Info("received signal: shutting down", slog.String("signal", e.Signal.String()))
} else if !errors.Is(err, http.ErrServerClosed) {
r.Logger.Error("application stopped due to error", slog.Any("error", err))
}
}
|