mirror of
https://github.com/yusing/godoxy.git
synced 2025-06-15 14:36:48 +02:00
refactor(provider): simplify provider initializations, initialize watcher only when needed
This commit is contained in:
parent
df24acb4af
commit
9a5553a5b8
1 changed files with 17 additions and 31 deletions
|
@ -3,7 +3,6 @@ package provider
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"path"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/rs/zerolog"
|
"github.com/rs/zerolog"
|
||||||
|
@ -22,8 +21,6 @@ type (
|
||||||
|
|
||||||
t types.ProviderType
|
t types.ProviderType
|
||||||
routes route.Routes
|
routes route.Routes
|
||||||
|
|
||||||
watcher W.Watcher
|
|
||||||
}
|
}
|
||||||
ProviderImpl interface {
|
ProviderImpl interface {
|
||||||
fmt.Stringer
|
fmt.Stringer
|
||||||
|
@ -41,43 +38,31 @@ const (
|
||||||
|
|
||||||
var ErrEmptyProviderName = errors.New("empty provider name")
|
var ErrEmptyProviderName = errors.New("empty provider name")
|
||||||
|
|
||||||
func newProvider(t types.ProviderType) *Provider {
|
func NewFileProvider(filename string) *Provider {
|
||||||
return &Provider{t: t}
|
return &Provider{
|
||||||
}
|
t: types.ProviderTypeFile,
|
||||||
|
ProviderImpl: FileProviderImpl(filename),
|
||||||
func NewFileProvider(filename string) (p *Provider, err error) {
|
|
||||||
name := path.Base(filename)
|
|
||||||
if name == "" {
|
|
||||||
return nil, ErrEmptyProviderName
|
|
||||||
}
|
}
|
||||||
p = newProvider(types.ProviderTypeFile)
|
|
||||||
p.ProviderImpl, err = FileProviderImpl(filename)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
p.watcher = p.NewWatcher()
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewDockerProvider(name string, dockerHost string) *Provider {
|
func NewDockerProvider(name string, dockerHost string) *Provider {
|
||||||
p := newProvider(types.ProviderTypeDocker)
|
return &Provider{
|
||||||
p.ProviderImpl = DockerProviderImpl(name, dockerHost)
|
t: types.ProviderTypeDocker,
|
||||||
p.watcher = p.NewWatcher()
|
ProviderImpl: DockerProviderImpl(name, dockerHost),
|
||||||
return p
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewAgentProvider(cfg *agent.AgentConfig) *Provider {
|
func NewAgentProvider(cfg *agent.AgentConfig) *Provider {
|
||||||
p := newProvider(types.ProviderTypeAgent)
|
return &Provider{
|
||||||
agent := &AgentProvider{
|
t: types.ProviderTypeAgent,
|
||||||
AgentConfig: cfg,
|
ProviderImpl: &AgentProvider{
|
||||||
docker: DockerProviderImpl(cfg.Name(), cfg.FakeDockerHost()),
|
AgentConfig: cfg,
|
||||||
|
docker: DockerProviderImpl(cfg.Name(), cfg.FakeDockerHost()),
|
||||||
|
},
|
||||||
}
|
}
|
||||||
p.ProviderImpl = agent
|
|
||||||
p.watcher = p.NewWatcher()
|
|
||||||
return p
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Provider) GetType() types.ProviderType {
|
func (p *Provider) Type() types.ProviderType {
|
||||||
return p.t
|
return p.t
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -105,6 +90,7 @@ func (p *Provider) Start(parent task.Parent) gperr.Error {
|
||||||
errs.Add(p.startRoute(t, r))
|
errs.Add(p.startRoute(t, r))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
watcher := p.NewWatcher()
|
||||||
eventQueue := events.NewEventQueue(
|
eventQueue := events.NewEventQueue(
|
||||||
t.Subtask("event_queue", false),
|
t.Subtask("event_queue", false),
|
||||||
providerEventFlushInterval,
|
providerEventFlushInterval,
|
||||||
|
@ -118,7 +104,7 @@ func (p *Provider) Start(parent task.Parent) gperr.Error {
|
||||||
gperr.LogError("event error", err, p.Logger())
|
gperr.LogError("event error", err, p.Logger())
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
eventQueue.Start(p.watcher.Events(t.Context()))
|
eventQueue.Start(watcher.Events(t.Context()))
|
||||||
|
|
||||||
if err := errs.Error(); err != nil {
|
if err := errs.Error(); err != nil {
|
||||||
return err.Subject(p.String())
|
return err.Subject(p.String())
|
||||||
|
|
Loading…
Add table
Reference in a new issue