Files
lockx/options.go
T

62 lines
984 B
Go
Raw Normal View History

2024-04-17 19:52:43 +08:00
package lockx
2024-06-21 00:20:54 +08:00
import (
"context"
"log"
"time"
)
2024-04-17 19:52:43 +08:00
type option struct {
lockTimeout time.Duration // 锁的超时时间
2024-06-21 00:20:54 +08:00
logger Logger // 日志
2024-04-17 19:52:43 +08:00
}
func defaultOption() *option {
return &option{
lockTimeout: time.Minute * 60,
2024-06-21 00:20:54 +08:00
logger: &print{},
2024-04-17 19:52:43 +08:00
}
}
var opt *option
func init() {
opt = defaultOption()
}
// 设置
func InitOption(opts ...Option) {
for _, app := range opts {
app(opt)
}
}
type Option func(*option)
func SetTimeout(t time.Duration) Option {
return func(o *option) {
o.lockTimeout = t
}
}
2024-06-21 00:20:54 +08:00
func SetLogger(logger Logger) Option {
return func(o *option) {
o.logger = logger
}
}
type Logger interface {
Errorf(ctx context.Context, format string, v ...any)
Printf(ctx context.Context, format string, v ...any)
}
type print struct{}
func (*print) Errorf(ctx context.Context, format string, v ...any) {
log.Printf(format, v...)
}
func (*print) Printf(ctx context.Context, format string, v ...any) {
log.Printf(format, v...)
}