feat: implement server and client
This commit is contained in:
48
option.go
Normal file
48
option.go
Normal file
@ -0,0 +1,48 @@
|
||||
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
|
||||
}
|
Reference in New Issue
Block a user