39 lines
1.1 KiB
Go
39 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 ShardStoreLockReqBuilder struct {
|
|
*LockRequestBuilder
|
|
}
|
|
|
|
func (b *LockRequestBuilder) Shard() *ShardStoreLockReqBuilder {
|
|
return &ShardStoreLockReqBuilder{LockRequestBuilder: b}
|
|
}
|
|
func (b *ShardStoreLockReqBuilder) Buzy(stgID cortypes.StorageID) *ShardStoreLockReqBuilder {
|
|
b.locks = append(b.locks, distlock.Lock{
|
|
Path: b.makePath(stgID),
|
|
Name: lockprovider.ShardStoreBuzyLock,
|
|
Target: *lockprovider.NewStringLockTarget(),
|
|
})
|
|
return b
|
|
}
|
|
|
|
func (b *ShardStoreLockReqBuilder) GC(stgID cortypes.StorageID) *ShardStoreLockReqBuilder {
|
|
b.locks = append(b.locks, distlock.Lock{
|
|
Path: b.makePath(stgID),
|
|
Name: lockprovider.ShardStoreGCLock,
|
|
Target: *lockprovider.NewStringLockTarget(),
|
|
})
|
|
return b
|
|
}
|
|
|
|
func (b *ShardStoreLockReqBuilder) makePath(hubID cortypes.StorageID) []string {
|
|
return []string{lockprovider.ShardStoreLockPathPrefix, strconv.FormatInt(int64(hubID), 10)}
|
|
}
|