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 }