refactor: replicate what we did in api and remove the need for an InitFunc
This commit is contained in:
parent
12a5f3f631
commit
afc0b7a343
|
@ -2,6 +2,7 @@ package protocols
|
|||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"git.lumeweb.com/LumeWeb/portal/protocols/registry"
|
||||
"git.lumeweb.com/LumeWeb/portal/protocols/s5"
|
||||
"github.com/samber/lo"
|
||||
|
@ -11,9 +12,8 @@ import (
|
|||
|
||||
func RegisterProtocols() {
|
||||
registry.Register(registry.ProtocolEntry{
|
||||
Key: "s5",
|
||||
Module: s5.ProtocolModule,
|
||||
InitFunc: s5.InitProtocol,
|
||||
Key: "s5",
|
||||
Module: s5.ProtocolModule,
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -23,12 +23,20 @@ func BuildProtocols(config *viper.Viper) fx.Option {
|
|||
for _, entry := range registry.GetRegistry() {
|
||||
if lo.Contains(enabledProtocols, entry.Key) {
|
||||
options = append(options, entry.Module)
|
||||
if entry.InitFunc != nil {
|
||||
options = append(options, fx.Invoke(entry.InitFunc))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
options = append(options, fx.Invoke(func(protocols []registry.Protocol) error {
|
||||
for _, protocol := range protocols {
|
||||
err := protocol.Init()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}))
|
||||
|
||||
return fx.Module("protocols", fx.Options(options...))
|
||||
}
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@ package registry
|
|||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"go.uber.org/fx"
|
||||
)
|
||||
|
||||
|
@ -15,9 +16,8 @@ type Protocol interface {
|
|||
}
|
||||
|
||||
type ProtocolEntry struct {
|
||||
Key string
|
||||
Module fx.Option
|
||||
InitFunc interface{}
|
||||
Key string
|
||||
Module fx.Option
|
||||
}
|
||||
|
||||
var protocolEntry []ProtocolEntry
|
||||
|
|
|
@ -162,9 +162,6 @@ func NewS5ProviderStore(params S5ProviderStoreParams) *S5ProviderStore {
|
|||
}
|
||||
}
|
||||
|
||||
func InitProtocol(s5 *S5Protocol, node *s5node.Node, store *S5ProviderStore) error {
|
||||
return s5.Init(node, store)
|
||||
}
|
||||
func (s *S5Protocol) Init(args ...any) error {
|
||||
if node, ok := args[0].(*s5node.Node); !ok {
|
||||
s.logger.Fatal("Node is not a s5 node")
|
||||
|
|
Loading…
Reference in New Issue