bug: Make bus Initialize idempotent, add Reload

This commit is contained in:
Ettore Di Giacinto
2022-08-20 21:47:16 +00:00
committed by Itxaka
parent 1254c09745
commit 6b5c4d416c
2 changed files with 41 additions and 28 deletions

View File

@@ -68,7 +68,7 @@ func Run(opts ...Option) error {
}
// Re-load providers
bus.Manager.LoadProviders()
bus.Reload()
err = machine.CreateSentinel("bundles")
if !c.IgnoreBundleErrors && err != nil {
return err

View File

@@ -10,14 +10,24 @@ import (
)
// Manager is the bus instance manager, which subscribes plugins to events emitted.
var Manager = &Bus{
var Manager = NewBus()
func NewBus() *Bus {
return &Bus{
Manager: pluggable.NewManager(
bus.AllEvents,
),
}
}
func Reload() {
Manager = NewBus()
Manager.Initialize()
}
type Bus struct {
*pluggable.Manager
registered bool
}
func (b *Bus) LoadProviders() {
@@ -26,6 +36,7 @@ func (b *Bus) LoadProviders() {
}
func (b *Bus) Initialize() {
if !b.registered {
b.LoadProviders()
for i := range b.Manager.Events {
e := b.Manager.Events[i]
@@ -51,4 +62,6 @@ func (b *Bus) Initialize() {
}
})
}
b.registered = true
}
}