定时器可选项

This commit is contained in:
kercylan98
2023-05-16 12:05:56 +08:00
parent 6c088cf8b4
commit ce63fff7c7
4 changed files with 46 additions and 1 deletions
+16 -1
View File
@@ -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 {