JCS-pub/common/pkgs/distlock/reqbuilder/lock_request_builder.go

30 lines
688 B
Go

package reqbuilder
import (
"gitlink.org.cn/cloudream/common/utils/lo2"
"gitlink.org.cn/cloudream/jcs-pub/common/pkgs/distlock"
"gitlink.org.cn/cloudream/jcs-pub/common/pkgs/distlock/types"
)
type LockRequestBuilder struct {
locks []types.Lock
}
func NewBuilder() *LockRequestBuilder {
return &LockRequestBuilder{}
}
func (b *LockRequestBuilder) IsEmpty() bool {
return len(b.locks) == 0
}
func (b *LockRequestBuilder) Build() types.LockRequest {
return types.LockRequest{
Locks: lo2.ArrayClone(b.locks),
}
}
func (b *LockRequestBuilder) MutexLock(svc *distlock.Service, opt ...distlock.AcquireOptionFn) (*distlock.Mutex, error) {
return svc.Acquire(b.Build(), opt...)
}