49 lines
788 B
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
|
|
}
|