feat: initial commit
This commit is contained in:
62
reach/client/socketio/options.go
Normal file
62
reach/client/socketio/options.go
Normal file
@ -0,0 +1,62 @@
|
||||
package socketio
|
||||
|
||||
import "time"
|
||||
|
||||
type Options struct {
|
||||
PingInterval time.Duration
|
||||
PingTimeout time.Duration
|
||||
ReceiveTimeout time.Duration
|
||||
SendTimeout time.Duration
|
||||
BufferSize int
|
||||
}
|
||||
|
||||
type OptionFunc func(opts *Options)
|
||||
|
||||
func NewOptions(funcs ...OptionFunc) *Options {
|
||||
opts := &Options{
|
||||
PingInterval: 5 * time.Second,
|
||||
PingTimeout: 60 * time.Second,
|
||||
ReceiveTimeout: 60 * time.Second,
|
||||
SendTimeout: 60 * time.Second,
|
||||
BufferSize: 1024 * 32,
|
||||
}
|
||||
for _, fn := range funcs {
|
||||
fn(opts)
|
||||
}
|
||||
return opts
|
||||
}
|
||||
|
||||
// WithPingInterval configures the client to use the given ping interval
|
||||
func WithPingInterval(interval time.Duration) OptionFunc {
|
||||
return func(opts *Options) {
|
||||
opts.PingInterval = interval
|
||||
}
|
||||
}
|
||||
|
||||
// WithPingTimeout configures the client to use the given ping timeout
|
||||
func WithPingTimeout(timeout time.Duration) OptionFunc {
|
||||
return func(opts *Options) {
|
||||
opts.PingTimeout = timeout
|
||||
}
|
||||
}
|
||||
|
||||
// WithReceiveTimeout configures the client to use the given receive timeout
|
||||
func WithReceiveTimeout(timeout time.Duration) OptionFunc {
|
||||
return func(opts *Options) {
|
||||
opts.ReceiveTimeout = timeout
|
||||
}
|
||||
}
|
||||
|
||||
// WithSendTimeout configures the client to use the given send timeout
|
||||
func WithSendTimeout(timeout time.Duration) OptionFunc {
|
||||
return func(opts *Options) {
|
||||
opts.SendTimeout = timeout
|
||||
}
|
||||
}
|
||||
|
||||
// WithBufferSize configures the client to use the given buffer size
|
||||
func WithBufferSize(size int) OptionFunc {
|
||||
return func(opts *Options) {
|
||||
opts.BufferSize = size
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user