From ccc967fd59a5e6490a4b795a36a931901031bce0 Mon Sep 17 00:00:00 2001 From: Su Yang Date: Sun, 15 Jun 2025 17:11:28 +0800 Subject: [PATCH] feat: allow disable healthcheck --- config.go | 21 +++++++++++++++++++++ main.go | 6 ++++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/config.go b/config.go index 2c99235..35fa1b8 100644 --- a/config.go +++ b/config.go @@ -21,6 +21,7 @@ type Config struct { SetupDelay time.Duration // Delay between setup retries EnableFinder bool // Enable service finder SetupFinderInterval time.Duration // Interval for service finder + EnableHealthCheck bool // Enable health check endpoint } // ConfigProvider interface for dependency injection @@ -96,6 +97,18 @@ func (p *DefaultConfigProvider) GetSetupDelay() time.Duration { return p.config.SetupDelay } +func (p *DefaultConfigProvider) GetEnableFinder() bool { + return p.config.EnableFinder +} + +func (p *DefaultConfigProvider) GetSetupFinderInterval() time.Duration { + return p.config.SetupFinderInterval +} + +func (p *DefaultConfigProvider) GetEnableHealthCheck() bool { + return p.config.EnableHealthCheck +} + // ConfigParser handles parsing configuration from various sources type ConfigParser struct{} @@ -119,6 +132,7 @@ func (cp *ConfigParser) ParseConfig() (*Config, error) { var setupDelaySeconds int var setupFinderEnabled bool var setupFinderInterval int + var setupHealthCheck bool flag.StringVar(&canPortsFlag, "can-ports", "", "Comma-separated list of CAN interfaces (e.g., can0,can1)") flag.StringVar(&serverPort, "port", "5260", "HTTP server port") @@ -130,6 +144,7 @@ func (cp *ConfigParser) ParseConfig() (*Config, error) { flag.IntVar(&setupDelaySeconds, "setup-delay", 2, "Delay between setup retries (seconds)") flag.BoolVar(&setupFinderEnabled, "enable-finder", true, "Enable service finder") flag.IntVar(&setupFinderInterval, "finder-interval", 5, "Interval for service finder in seconds") + flag.BoolVar(&setupHealthCheck, "enable-healthcheck", true, "Enable health check endpoint") flag.Parse() // Environment variables (override command line) @@ -187,6 +202,12 @@ func (cp *ConfigParser) ParseConfig() (*Config, error) { } } + if setupHealthCheck { + config.EnableHealthCheck = true + } else { + config.EnableHealthCheck = false + } + config.Port = serverPort config.AutoSetup = autoSetup config.Bitrate = bitrate diff --git a/main.go b/main.go index d48aa7d..fc878e5 100644 --- a/main.go +++ b/main.go @@ -258,8 +258,10 @@ func (s *Service) setupHTTPServer() { // Start starts the service func (s *Service) Start(ctx context.Context) error { // Start watchdog - if err := s.watchdog.Start(ctx); err != nil { - return fmt.Errorf("failed to start watchdog: %w", err) + if s.config.EnableHealthCheck { + if err := s.watchdog.Start(ctx); err != nil { + return fmt.Errorf("failed to start watchdog: %w", err) + } } // Start Node Finder in a separate goroutine