server: add GracefulTimeout option #304
| @@ -86,6 +86,8 @@ type Options struct { | |||||||
| 	DeregisterAttempts int | 	DeregisterAttempts int | ||||||
| 	// Hooks may contains SubscriberWrapper, HandlerWrapper or Server func wrapper | 	// Hooks may contains SubscriberWrapper, HandlerWrapper or Server func wrapper | ||||||
| 	Hooks options.Hooks | 	Hooks options.Hooks | ||||||
|  | 	// GracefulTimeout timeout for graceful stop server | ||||||
|  | 	GracefulTimeout time.Duration | ||||||
| } | } | ||||||
|  |  | ||||||
| // NewOptions returns new options struct with default or passed values | // NewOptions returns new options struct with default or passed values | ||||||
| @@ -108,6 +110,7 @@ func NewOptions(opts ...Option) Options { | |||||||
| 		Version:          DefaultVersion, | 		Version:          DefaultVersion, | ||||||
| 		ID:               id.Must(), | 		ID:               id.Must(), | ||||||
| 		Namespace:        DefaultNamespace, | 		Namespace:        DefaultNamespace, | ||||||
|  | 		GracefulTimeout:  DefaultGracefulTimeout, | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	for _, o := range opts { | 	for _, o := range opts { | ||||||
| @@ -318,11 +321,22 @@ func Listener(l net.Listener) Option { | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|  | <<<<<<< HEAD | ||||||
| // HandlerOption func | // HandlerOption func | ||||||
| type HandlerOption func(*HandlerOptions) | type HandlerOption func(*HandlerOptions) | ||||||
|  |  | ||||||
| // HandlerOptions struct | // HandlerOptions struct | ||||||
| type HandlerOptions struct { | type HandlerOptions struct { | ||||||
|  | ======= | ||||||
|  | func GracefulTimeout(t time.Duration) options.Option { | ||||||
|  | 	return func(src interface{}) error { | ||||||
|  | 		return options.Set(src, t, ".GracefulTimeout") | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // HandleOptions struct | ||||||
|  | type HandleOptions struct { | ||||||
|  | >>>>>>> bf0c3016cb09 (add gracefultimeout in server) | ||||||
| 	// Context holds external options | 	// Context holds external options | ||||||
| 	Context context.Context | 	Context context.Context | ||||||
| 	// Metadata for handler | 	// Metadata for handler | ||||||
|   | |||||||
| @@ -34,6 +34,8 @@ var ( | |||||||
| 	DefaultMaxMsgRecvSize = 1024 * 1024 * 4 // 4Mb | 	DefaultMaxMsgRecvSize = 1024 * 1024 * 4 // 4Mb | ||||||
| 	// DefaultMaxMsgSendSize holds default max send size | 	// DefaultMaxMsgSendSize holds default max send size | ||||||
| 	DefaultMaxMsgSendSize = 1024 * 1024 * 4 // 4Mb | 	DefaultMaxMsgSendSize = 1024 * 1024 * 4 // 4Mb | ||||||
|  | 	// DefaultGracefulTimeout default time for graceful stop | ||||||
|  | 	DefaultGracefulTimeout = 5 * time.Second | ||||||
| ) | ) | ||||||
|  |  | ||||||
| // Server is a simple micro server abstraction | // Server is a simple micro server abstraction | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user