You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

storage.go 2.5 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. package reqbuilder
  2. import (
  3. "strconv"
  4. "gitlink.org.cn/cloudream/common/pkg/distlock"
  5. "gitlink.org.cn/cloudream/common/pkg/distlock/lockprovider"
  6. )
  7. type StorageLockReqBuilder struct {
  8. *LockRequestBuilder
  9. }
  10. func (b *LockRequestBuilder) Storage() *StorageLockReqBuilder {
  11. return &StorageLockReqBuilder{LockRequestBuilder: b}
  12. }
  13. func (b *MetadataLockReqBuilder) Storage() *StorageLockReqBuilder {
  14. return &StorageLockReqBuilder{LockRequestBuilder: b.LockRequestBuilder}
  15. }
  16. func (b *IPFSLockReqBuilder) Storage() *StorageLockReqBuilder {
  17. return &StorageLockReqBuilder{LockRequestBuilder: b.LockRequestBuilder}
  18. }
  19. func (b *StorageLockReqBuilder) ReadOneObject(storageID int, fileHash string) *StorageLockReqBuilder {
  20. b.locks = append(b.locks, distlock.Lock{
  21. Path: b.makePath(storageID),
  22. Name: lockprovider.STORAGE_ELEMENT_READ_LOCK,
  23. Target: *lockprovider.NewStringLockTarget().AddComponent(fileHash),
  24. })
  25. return b
  26. }
  27. func (b *StorageLockReqBuilder) WriteOneObject(storageID int, fileHash string) *StorageLockReqBuilder {
  28. b.locks = append(b.locks, distlock.Lock{
  29. Path: b.makePath(storageID),
  30. Name: lockprovider.STORAGE_ELEMENT_WRITE_LOCK,
  31. Target: *lockprovider.NewStringLockTarget().AddComponent(fileHash),
  32. })
  33. return b
  34. }
  35. func (b *StorageLockReqBuilder) CreateOneObject(storageID int, fileHash string) *StorageLockReqBuilder {
  36. b.locks = append(b.locks, distlock.Lock{
  37. Path: b.makePath(storageID),
  38. Name: lockprovider.STORAGE_ELEMENT_WRITE_LOCK,
  39. Target: *lockprovider.NewStringLockTarget().AddComponent(fileHash),
  40. })
  41. return b
  42. }
  43. func (b *StorageLockReqBuilder) ReadAnyObject(storageID int) *StorageLockReqBuilder {
  44. b.locks = append(b.locks, distlock.Lock{
  45. Path: b.makePath(storageID),
  46. Name: lockprovider.STORAGE_SET_READ_LOCK,
  47. Target: *lockprovider.NewStringLockTarget(),
  48. })
  49. return b
  50. }
  51. func (b *StorageLockReqBuilder) WriteAnyObject(storageID int) *StorageLockReqBuilder {
  52. b.locks = append(b.locks, distlock.Lock{
  53. Path: b.makePath(storageID),
  54. Name: lockprovider.STORAGE_SET_WRITE_LOCK,
  55. Target: *lockprovider.NewStringLockTarget(),
  56. })
  57. return b
  58. }
  59. func (b *StorageLockReqBuilder) CreateAnyObject(storageID int) *StorageLockReqBuilder {
  60. b.locks = append(b.locks, distlock.Lock{
  61. Path: b.makePath(storageID),
  62. Name: lockprovider.STORAGE_SET_CREATE_LOCK,
  63. Target: *lockprovider.NewStringLockTarget(),
  64. })
  65. return b
  66. }
  67. func (b *StorageLockReqBuilder) makePath(storageID int) []string {
  68. return []string{distlock.STORAGE_LOCK_PATH_PREFIX, strconv.Itoa(storageID)}
  69. }

公共库

Contributors (1)