31 lines
602 B
Go
31 lines
602 B
Go
package reqbuilder
|
|
|
|
import (
|
|
"gitlink.org.cn/cloudream/common/pkgs/distlock"
|
|
"gitlink.org.cn/cloudream/common/utils/lo2"
|
|
)
|
|
|
|
type LockRequestBuilder struct {
|
|
locks []distlock.Lock
|
|
}
|
|
|
|
func NewBuilder() *LockRequestBuilder {
|
|
return &LockRequestBuilder{}
|
|
}
|
|
|
|
func (b *LockRequestBuilder) Build() distlock.LockRequest {
|
|
return distlock.LockRequest{
|
|
Locks: lo2.ArrayClone(b.locks),
|
|
}
|
|
}
|
|
|
|
func (b *LockRequestBuilder) MutexLock(svc *distlock.Service) (*distlock.Mutex, error) {
|
|
mutex := distlock.NewMutex(svc, b.Build())
|
|
err := mutex.Lock()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return mutex, nil
|
|
}
|