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)} }