package redisLock const ( DEFAULTMAXWAITSECOND = 5 DEFAULTMAXEXPIRESECOND = 30 ) type RedisLockOptions struct { isBlock bool maxWaitSecond int expireSecond int isReNew bool } func (r *RedisLockOptions) repairOption() { //if r.isBlock && r.maxWaitSecond <= 0 { // r.maxWaitSecond = DEFAULTMAXWAITSECOND //} if r.expireSecond > 0 { return } r.expireSecond = DEFAULTMAXEXPIRESECOND r.isReNew = true } type RedisLockOption func(*RedisLockOptions) func WithBlock() RedisLockOption { return func(o *RedisLockOptions) { o.isBlock = true } } func WithMaxWaitTime(maxWaitTime int) RedisLockOption { return func(o *RedisLockOptions) { o.maxWaitSecond = maxWaitTime } } func WithExpireTime(expireTime int) RedisLockOption { return func(o *RedisLockOptions) { o.expireSecond = expireTime } } type RedLockOptions struct { perHostTimeout int expireHostTime int } func (r *RedLockOptions) repairOption() { if r.perHostTimeout <= 0 { r.perHostTimeout = DEFAULTMAXWAITSECOND } } type RedLockOption func(*RedLockOptions) func WithPerHostTimeout(perHostTimeout int) RedLockOption { return func(o *RedLockOptions) { o.perHostTimeout = perHostTimeout } } func WithExpireHostTime(expireTime int) RedLockOption { return func(o *RedLockOptions) { o.expireHostTime = expireTime } }