From 14839e58cf6032b1ddaff077293621748a6907cc Mon Sep 17 00:00:00 2001 From: Virgil Date: Sat, 4 Apr 2026 08:35:12 +0000 Subject: [PATCH] docs: clarify mining lifecycle names --- pkg/mining/auth.go | 18 +++++++++--------- pkg/mining/container.go | 10 +++++----- pkg/mining/manager.go | 20 ++++++++++---------- pkg/mining/ratelimiter.go | 8 ++++---- pkg/mining/service.go | 22 +++++++++++----------- pkg/mining/simulated_miner.go | 8 ++++---- 6 files changed, 43 insertions(+), 43 deletions(-) diff --git a/pkg/mining/auth.go b/pkg/mining/auth.go index c9c54b4..6741a50 100644 --- a/pkg/mining/auth.go +++ b/pkg/mining/auth.go @@ -62,17 +62,17 @@ func AuthConfigFromEnv() AuthConfig { // digestAuth := NewDigestAuth(authConfig); router.Use(digestAuth.Middleware()); defer digestAuth.Stop() type DigestAuth struct { - config AuthConfig - nonces sync.Map // map[string]time.Time for nonce expiry tracking - stopChan chan struct{} - stopOnce sync.Once + config AuthConfig + nonces sync.Map // map[string]time.Time for nonce expiry tracking + stopChannel chan struct{} + stopOnce sync.Once } // digestAuth := NewDigestAuth(AuthConfigFromEnv()); router.Use(digestAuth.Middleware()) func NewDigestAuth(config AuthConfig) *DigestAuth { digestAuth := &DigestAuth{ - config: config, - stopChan: make(chan struct{}), + config: config, + stopChannel: make(chan struct{}), } // go digestAuth.cleanupNonces() // clears expired nonces every 5 minutes go digestAuth.cleanupNonces() @@ -82,7 +82,7 @@ func NewDigestAuth(config AuthConfig) *DigestAuth { // defer digestAuth.Stop() // safe to call multiple times; stops the nonce cleanup goroutine func (digestAuth *DigestAuth) Stop() { digestAuth.stopOnce.Do(func() { - close(digestAuth.stopChan) + close(digestAuth.stopChannel) }) } @@ -206,7 +206,7 @@ func (digestAuth *DigestAuth) generateOpaque() string { return md5Hash(digestAuth.config.Realm) } -// go digestAuth.cleanupNonces() // runs until stopChan is closed; interval = NonceExpiry +// go digestAuth.cleanupNonces() // runs until stopChannel is closed; interval = NonceExpiry func (digestAuth *DigestAuth) cleanupNonces() { interval := digestAuth.config.NonceExpiry if interval <= 0 { @@ -217,7 +217,7 @@ func (digestAuth *DigestAuth) cleanupNonces() { for { select { - case <-digestAuth.stopChan: + case <-digestAuth.stopChannel: return case <-ticker.C: now := time.Now() diff --git a/pkg/mining/container.go b/pkg/mining/container.go index 8ecdb00..b1ea21f 100644 --- a/pkg/mining/container.go +++ b/pkg/mining/container.go @@ -50,15 +50,15 @@ type Container struct { hashrateStore database.HashrateStore initialized bool transportStarted bool - shutdownCh chan struct{} + shutdownChannel chan struct{} } // container := NewContainer(DefaultContainerConfig()) // container.Initialize(ctx) func NewContainer(config ContainerConfig) *Container { return &Container{ - config: config, - shutdownCh: make(chan struct{}), + config: config, + shutdownChannel: make(chan struct{}), } } @@ -184,7 +184,7 @@ func (container *Container) Shutdown(ctx context.Context) error { } container.initialized = false - close(container.shutdownCh) + close(container.shutdownChannel) if len(errs) > 0 { return ErrInternal("shutdown completed with errors").WithCause(errs[0]) @@ -243,7 +243,7 @@ func (container *Container) SetHashrateStore(store database.HashrateStore) { // <-container.ShutdownCh() // blocks until `mining serve` finishes shutting down. func (container *Container) ShutdownCh() <-chan struct{} { - return container.shutdownCh + return container.shutdownChannel } // if container.IsInitialized() { container.Start(ctx) } diff --git a/pkg/mining/manager.go b/pkg/mining/manager.go index 02e73a7..bd91d19 100644 --- a/pkg/mining/manager.go +++ b/pkg/mining/manager.go @@ -65,7 +65,7 @@ type ManagerInterface interface { type Manager struct { miners map[string]Miner mutex sync.RWMutex - stopChan chan struct{} + stopChannel chan struct{} stopOnce sync.Once waitGroup sync.WaitGroup databaseEnabled bool @@ -99,9 +99,9 @@ var _ ManagerInterface = (*Manager)(nil) // defer manager.Stop() // stops miner goroutines and the hourly database cleanup loop func NewManager() *Manager { manager := &Manager{ - miners: make(map[string]Miner), - stopChan: make(chan struct{}), - waitGroup: sync.WaitGroup{}, + miners: make(map[string]Miner), + stopChannel: make(chan struct{}), + waitGroup: sync.WaitGroup{}, } manager.syncMinersConfig() manager.initDatabase() @@ -114,9 +114,9 @@ func NewManager() *Manager { // manager.StartMiner(ctx, "xmrig", &Config{Algo: "rx/0"}) func NewManagerForSimulation() *Manager { manager := &Manager{ - miners: make(map[string]Miner), - stopChan: make(chan struct{}), - waitGroup: sync.WaitGroup{}, + miners: make(map[string]Miner), + stopChannel: make(chan struct{}), + waitGroup: sync.WaitGroup{}, } manager.startStatsCollection() return manager @@ -181,7 +181,7 @@ func (manager *Manager) startDBCleanup() { if err := database.Cleanup(manager.databaseRetention); err != nil { logging.Warn("database cleanup failed", logging.Fields{"error": err}) } - case <-manager.stopChan: + case <-manager.stopChannel: return } } @@ -574,7 +574,7 @@ func (manager *Manager) startStatsCollection() { select { case <-ticker.C: manager.collectMinerStats() - case <-manager.stopChan: + case <-manager.stopChannel: return } } @@ -738,7 +738,7 @@ func (manager *Manager) Stop() { } manager.mutex.Unlock() - close(manager.stopChan) + close(manager.stopChannel) // Wait for goroutines with timeout done := make(chan struct{}) diff --git a/pkg/mining/ratelimiter.go b/pkg/mining/ratelimiter.go index c81007e..5417d8b 100644 --- a/pkg/mining/ratelimiter.go +++ b/pkg/mining/ratelimiter.go @@ -15,7 +15,7 @@ type RateLimiter struct { burst int clients map[string]*rateLimitClient mutex sync.RWMutex - stopChan chan struct{} + stopChannel chan struct{} stopped bool } @@ -31,7 +31,7 @@ func NewRateLimiter(requestsPerSecond, burst int) *RateLimiter { requestsPerSecond: requestsPerSecond, burst: burst, clients: make(map[string]*rateLimitClient), - stopChan: make(chan struct{}), + stopChannel: make(chan struct{}), } // Start cleanup goroutine @@ -47,7 +47,7 @@ func (limiter *RateLimiter) cleanupLoop() { for { select { - case <-limiter.stopChan: + case <-limiter.stopChannel: return case <-ticker.C: limiter.cleanup() @@ -73,7 +73,7 @@ func (limiter *RateLimiter) Stop() { defer limiter.mutex.Unlock() if !limiter.stopped { - close(limiter.stopChan) + close(limiter.stopChannel) limiter.stopped = true } } diff --git a/pkg/mining/service.go b/pkg/mining/service.go index 3436661..39b36fa 100644 --- a/pkg/mining/service.go +++ b/pkg/mining/service.go @@ -46,7 +46,7 @@ type Service struct { APIBasePath string SwaggerUIPath string rateLimiter *RateLimiter - auth *DigestAuth + digestAuth *DigestAuth mcpServer *ginmcp.GinMCP } @@ -435,9 +435,9 @@ func NewService(manager ManagerInterface, listenAddress string, displayAddress s // AuthConfigFromEnv() enables digest auth for requests like GET /api/v1/mining/status when credentials are present. authConfig := AuthConfigFromEnv() - var auth *DigestAuth + var digestAuth *DigestAuth if authConfig.Enabled { - auth = NewDigestAuth(authConfig) + digestAuth = NewDigestAuth(authConfig) logging.Info("API authentication enabled", logging.Fields{"realm": authConfig.Realm}) } @@ -457,7 +457,7 @@ func NewService(manager ManagerInterface, listenAddress string, displayAddress s SwaggerInstanceName: instanceName, APIBasePath: apiBasePath, SwaggerUIPath: swaggerUIPath, - auth: auth, + digestAuth: digestAuth, }, nil } @@ -523,7 +523,7 @@ func (service *Service) InitRouter() { service.SetupRoutes() } -// Example: service.Stop() stops rate limiting, auth, event hub, and node transport during shutdown. +// Example: service.Stop() stops rate limiting, digest auth, event hub, and node transport during shutdown. func (service *Service) Stop() { if service.rateLimiter != nil { service.rateLimiter.Stop() @@ -531,8 +531,8 @@ func (service *Service) Stop() { if service.EventHub != nil { service.EventHub.Stop() } - if service.auth != nil { - service.auth.Stop() + if service.digestAuth != nil { + service.digestAuth.Stop() } if service.NodeService != nil { if err := service.NodeService.StopTransport(); err != nil { @@ -559,7 +559,7 @@ func (service *Service) ServiceStartup(runContext context.Context) error { go func() { <-runContext.Done() - service.Stop() // Example: service.Stop() shuts down auth, the event hub, and node transport after `context.WithCancel(...)`. + service.Stop() // Example: service.Stop() shuts down digest auth, the event hub, and node transport after `context.WithCancel(...)`. service.Manager.Stop() shutdownContext, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel() @@ -599,9 +599,9 @@ func (service *Service) SetupRoutes() { apiRoutes.GET("/health", service.handleHealth) apiRoutes.GET("/ready", service.handleReady) - // service.auth.Middleware() protects routes such as POST /api/v1/mining/doctor when API auth is enabled. - if service.auth != nil { - apiRoutes.Use(service.auth.Middleware()) + // service.digestAuth.Middleware() protects routes such as POST /api/v1/mining/doctor when API auth is enabled. + if service.digestAuth != nil { + apiRoutes.Use(service.digestAuth.Middleware()) } { diff --git a/pkg/mining/simulated_miner.go b/pkg/mining/simulated_miner.go index 3c90436..d913293 100644 --- a/pkg/mining/simulated_miner.go +++ b/pkg/mining/simulated_miner.go @@ -37,7 +37,7 @@ type SimulatedMiner struct { rejected int logs []string mutex sync.RWMutex - stopChan chan struct{} + stopChannel chan struct{} poolName string difficultyBase int } @@ -110,7 +110,7 @@ func (m *SimulatedMiner) Start(config *Config) error { m.startTime = time.Now() m.shares = 0 m.rejected = 0 - m.stopChan = make(chan struct{}) + m.stopChannel = make(chan struct{}) m.HashrateHistory = make([]HashratePoint, 0) m.LowResHistory = make([]HashratePoint, 0) timestamp := time.Now().Format("15:04:05") @@ -136,7 +136,7 @@ func (m *SimulatedMiner) Stop() error { return ErrMinerNotRunning(m.Name) } - close(m.stopChan) + close(m.stopChannel) m.Running = false m.logs = append(m.logs, "["+time.Now().Format("15:04:05")+"] Miner stopped") @@ -152,7 +152,7 @@ func (m *SimulatedMiner) runSimulation() { for { select { - case <-m.stopChan: + case <-m.stopChannel: return case <-ticker.C: m.updateHashrate()