40 lines
1.1 KiB
Go
40 lines
1.1 KiB
Go
package reqbuilder
|
|
|
|
import (
|
|
"strconv"
|
|
|
|
"gitlink.org.cn/cloudream/common/pkgs/distlock"
|
|
"gitlink.org.cn/cloudream/jcs-pub/common/pkgs/distlock/lockprovider"
|
|
cortypes "gitlink.org.cn/cloudream/jcs-pub/coordinator/types"
|
|
)
|
|
|
|
type StorageLockReqBuilder struct {
|
|
*LockRequestBuilder
|
|
}
|
|
|
|
func (b *LockRequestBuilder) Storage() *StorageLockReqBuilder {
|
|
return &StorageLockReqBuilder{LockRequestBuilder: b}
|
|
}
|
|
|
|
func (b *StorageLockReqBuilder) Buzy(storageID cortypes.StorageID) *StorageLockReqBuilder {
|
|
b.locks = append(b.locks, distlock.Lock{
|
|
Path: b.makePath(storageID),
|
|
Name: lockprovider.StorageBuzyLock,
|
|
Target: *lockprovider.NewStringLockTarget(),
|
|
})
|
|
return b
|
|
}
|
|
|
|
func (b *StorageLockReqBuilder) GC(storageID cortypes.StorageID) *StorageLockReqBuilder {
|
|
b.locks = append(b.locks, distlock.Lock{
|
|
Path: b.makePath(storageID),
|
|
Name: lockprovider.StorageGCLock,
|
|
Target: *lockprovider.NewStringLockTarget(),
|
|
})
|
|
return b
|
|
}
|
|
|
|
func (b *StorageLockReqBuilder) makePath(storageID cortypes.StorageID) []string {
|
|
return []string{lockprovider.StorageLockPathPrefix, strconv.FormatInt(int64(storageID), 10)}
|
|
}
|