evcc-io/server/eebus/connector.go
andig acb521362a
Some checks failed
Release / call-build-workflow (push) Has been cancelled
Release / Publish Docker :release (push) Has been cancelled
Release / Github & APT (push) Has been cancelled
Release / Demo (push) Has been cancelled
Release / Hassio Addon (push) Has been cancelled
EEBus: use context (#19284)
2025-03-01 12:12:56 +01:00

37 lines
597 B
Go

package eebus
import (
"context"
"sync"
"time"
"github.com/evcc-io/evcc/api"
)
const registerTimeout = 90 * time.Second
type Connector struct {
once sync.Once
connectC chan struct{}
}
func NewConnector() *Connector {
return &Connector{connectC: make(chan struct{})}
}
func (c *Connector) Wait(ctx context.Context) error {
select {
case <-ctx.Done():
return ctx.Err()
case <-time.After(registerTimeout):
return api.ErrTimeout
case <-c.connectC:
return nil
}
}
func (c *Connector) Connect(connected bool) {
if connected {
c.once.Do(func() { close(c.connectC) })
}
}