Files
krpc/option.go

49 lines
788 B
Go

package krpc
import (
"time"
"krwu.top/krpc.v1/codec"
)
type Options struct {
MagicNumber int
CodecType codec.Type
ConnectTimeout time.Duration
HandleTimeout time.Duration
}
var DefaultOptions = &Options{
MagicNumber: codec.MagicNumber,
CodecType: codec.GobType,
ConnectTimeout: time.Second * 3,
}
type Option func(*Options)
func WithCodecType(t codec.Type) Option {
return func(o *Options) {
o.CodecType = t
}
}
func WithConnectTimeout(t time.Duration) Option {
return func(o *Options) {
o.ConnectTimeout = t
}
}
func WithHandleTimeout(t time.Duration) Option {
return func(o *Options) {
o.HandleTimeout = t
}
}
func apply(o *Options, opts ...Option) Options {
newOpts := *o
for i := range opts {
opts[i](&newOpts)
}
return newOpts
}