package metrics import ( "context" "net/http" "git.frostfs.info/TrueCloudLab/frostfs-http-gw/internal/logs" "go.uber.org/zap" ) // Service serves metrics. type Service struct { *http.Server enabled bool log *zap.Logger serviceType string } // Config is a params to configure service. type Config struct { Address string Enabled bool } // Start runs http service with the exposed endpoint on the configured port. func (ms *Service) Start() { if ms.enabled { ms.log.Info(logs.ServiceIsRunning, zap.String("endpoint", ms.Addr)) err := ms.ListenAndServe() if err != nil && err != http.ErrServerClosed { ms.log.Warn(logs.ServiceCouldntStartOnConfiguredPort) } } else { ms.log.Info(logs.ServiceHasntStartedSinceItsDisabled) } } // ShutDown stops the service. func (ms *Service) ShutDown(ctx context.Context) { ms.log.Info(logs.ShuttingDownService, zap.String("endpoint", ms.Addr)) err := ms.Shutdown(ctx) if err != nil { ms.log.Error(logs.CantGracefullyShutDownService, zap.Error(err)) if err = ms.Close(); err != nil { ms.log.Panic(logs.CantShutDownService, zap.Error(err)) } } }