ws-go-server/modules/main.go
2025-05-18 23:54:04 +02:00

39 lines
693 B
Go

package modules
import (
"btclock/broker"
"context"
"sync"
)
type Module interface {
Init(broker *broker.EventBroker) error
Start(ctx context.Context) error
Stop() error
ID() string
}
type ModuleRegistry struct {
modules map[string]Module
mu sync.RWMutex
}
var Registry = &ModuleRegistry{
modules: make(map[string]Module),
}
func (b *ModuleRegistry) Register(module Module) {
b.mu.Lock()
defer b.mu.Unlock()
b.modules[module.ID()] = module
}
func (b *ModuleRegistry) GetAllModules() []Module {
b.mu.RLock()
defer b.mu.RUnlock()
modules := make([]Module, 0, len(b.modules))
for _, module := range b.modules {
modules = append(modules, module)
}
return modules
}