定时器可选项
This commit is contained in:
+16
-1
@@ -3,6 +3,7 @@ package server
|
||||
import (
|
||||
"github.com/kercylan98/minotaur/utils/hash"
|
||||
"github.com/kercylan98/minotaur/utils/log"
|
||||
"github.com/kercylan98/minotaur/utils/timer"
|
||||
"go.uber.org/zap"
|
||||
"google.golang.org/grpc"
|
||||
"reflect"
|
||||
@@ -22,7 +23,21 @@ const (
|
||||
)
|
||||
|
||||
type Option func(srv *Server)
|
||||
type CrossRegisterHandle func(server *Server) error
|
||||
|
||||
// WithTicker 通过定时器创建服务器,为服务器添加定时器功能
|
||||
// - autonomy:定时器是否独立运行(独立运行的情况下不会作为服务器消息运行,会导致并发问题)
|
||||
// - 多核与分流情况下需要考虑是否有必要 autonomy
|
||||
func WithTicker(size int, autonomy bool) Option {
|
||||
return func(srv *Server) {
|
||||
if !autonomy {
|
||||
srv.ticker = timer.GetTicker(size)
|
||||
} else {
|
||||
srv.ticker = timer.GetTicker(size, timer.WithCaller(func(name string, caller func()) {
|
||||
srv.PushMessage(MessageTypeTicker, caller)
|
||||
}))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// WithCross 通过跨服的方式创建服务器
|
||||
func WithCross(serverId int64, cross Cross) Option {
|
||||
|
||||
Reference in New Issue
Block a user