Files
streamctl/pkg/streamd/option.go
2024-12-01 14:55:29 +00:00

41 lines
809 B
Go

package streamd
import (
"github.com/xaionaro-go/streamctl/pkg/p2p/types"
)
type OptionsAggregated struct {
P2PSetupServer types.FuncSetupServer
P2PSetupClient types.FuncSetupClient
}
type Option interface {
apply(*OptionsAggregated)
}
type Options []Option
func (s Options) apply(opts *OptionsAggregated) {
for _, opt := range s {
opt.apply(opts)
}
}
func (s Options) Aggregate() OptionsAggregated {
opts := OptionsAggregated{}
s.apply(&opts)
return opts
}
type OptionP2PSetupServer types.FuncSetupServer
func (opt OptionP2PSetupServer) apply(opts *OptionsAggregated) {
opts.P2PSetupServer = types.FuncSetupServer(opt)
}
type OptionP2PSetupClient types.FuncSetupClient
func (opt OptionP2PSetupClient) apply(opts *OptionsAggregated) {
opts.P2PSetupClient = types.FuncSetupClient(opt)
}