package reqbuilder import ( "gitlink.org.cn/cloudream/common/utils/lo2" "gitlink.org.cn/cloudream/jcs-pub/common/pkgs/publock" "gitlink.org.cn/cloudream/jcs-pub/common/pkgs/publock/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 *publock.Service, opt ...publock.AcquireOptionFn) (*publock.Mutex, error) { return svc.Acquire(b.Build(), opt...) }