feat: initial commit
This commit is contained in:
47
reach/client/options.go
Normal file
47
reach/client/options.go
Normal file
@ -0,0 +1,47 @@
|
||||
package client
|
||||
|
||||
import (
|
||||
"forge.cadoles.com/cadoles/go-emlid/reach/client/protocol"
|
||||
v1 "forge.cadoles.com/cadoles/go-emlid/reach/client/protocol/v1"
|
||||
v2 "forge.cadoles.com/cadoles/go-emlid/reach/client/protocol/v2"
|
||||
)
|
||||
|
||||
type Options struct {
|
||||
Protocols *protocol.Registry
|
||||
PreferredProtocol protocol.Identifier
|
||||
FallbackProtocol protocol.Identifier
|
||||
}
|
||||
|
||||
type OptionFunc func(opts *Options)
|
||||
|
||||
func NewOptions(funcs ...OptionFunc) *Options {
|
||||
opts := &Options{
|
||||
PreferredProtocol: v2.Identifier,
|
||||
FallbackProtocol: v1.Identifier,
|
||||
Protocols: protocol.DefaultRegistry(),
|
||||
}
|
||||
|
||||
for _, fn := range funcs {
|
||||
fn(opts)
|
||||
}
|
||||
|
||||
return opts
|
||||
}
|
||||
|
||||
func WithPreferredProtocol(identifier protocol.Identifier) OptionFunc {
|
||||
return func(opts *Options) {
|
||||
opts.PreferredProtocol = identifier
|
||||
}
|
||||
}
|
||||
|
||||
func WithFallbackProtocol(identifier protocol.Identifier) OptionFunc {
|
||||
return func(opts *Options) {
|
||||
opts.FallbackProtocol = identifier
|
||||
}
|
||||
}
|
||||
|
||||
func WithProtocols(protocols *protocol.Registry) OptionFunc {
|
||||
return func(opts *Options) {
|
||||
opts.Protocols = protocols
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user