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.

ipfs.go 2.1 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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 IPFSLockReqBuilder struct {
  8. *LockRequestBuilder
  9. }
  10. func (b *LockRequestBuilder) IPFS() *IPFSLockReqBuilder {
  11. return &IPFSLockReqBuilder{LockRequestBuilder: b}
  12. }
  13. func (b *MetadataLockReqBuilder) IPFS() *IPFSLockReqBuilder {
  14. return &IPFSLockReqBuilder{LockRequestBuilder: b.LockRequestBuilder}
  15. }
  16. func (b *StorageLockReqBuilder) IPFS() *IPFSLockReqBuilder {
  17. return &IPFSLockReqBuilder{LockRequestBuilder: b.LockRequestBuilder}
  18. }
  19. func (b *IPFSLockReqBuilder) ReadOneRep(nodeID int, fileHash string) *IPFSLockReqBuilder {
  20. b.locks = append(b.locks, distlock.Lock{
  21. Path: b.makePath(nodeID),
  22. Name: lockprovider.IPFS_ELEMENT_READ_LOCK,
  23. Target: *lockprovider.NewStringLockTarget().AddComponent(fileHash),
  24. })
  25. return b
  26. }
  27. func (b *IPFSLockReqBuilder) WriteOneRep(nodeID int, fileHash string) *IPFSLockReqBuilder {
  28. b.locks = append(b.locks, distlock.Lock{
  29. Path: b.makePath(nodeID),
  30. Name: lockprovider.IPFS_ELEMENT_WRITE_LOCK,
  31. Target: *lockprovider.NewStringLockTarget().AddComponent(fileHash),
  32. })
  33. return b
  34. }
  35. func (b *IPFSLockReqBuilder) ReadAnyRep(nodeID int) *IPFSLockReqBuilder {
  36. b.locks = append(b.locks, distlock.Lock{
  37. Path: b.makePath(nodeID),
  38. Name: lockprovider.IPFS_SET_READ_LOCK,
  39. Target: *lockprovider.NewStringLockTarget(),
  40. })
  41. return b
  42. }
  43. func (b *IPFSLockReqBuilder) WriteAnyRep(nodeID int) *IPFSLockReqBuilder {
  44. b.locks = append(b.locks, distlock.Lock{
  45. Path: b.makePath(nodeID),
  46. Name: lockprovider.IPFS_SET_WRITE_LOCK,
  47. Target: *lockprovider.NewStringLockTarget(),
  48. })
  49. return b
  50. }
  51. func (b *IPFSLockReqBuilder) CreateAnyRep(nodeID int) *IPFSLockReqBuilder {
  52. b.locks = append(b.locks, distlock.Lock{
  53. Path: b.makePath(nodeID),
  54. Name: lockprovider.IPFS_SET_CREATE_LOCK,
  55. Target: *lockprovider.NewStringLockTarget(),
  56. })
  57. return b
  58. }
  59. func (b *IPFSLockReqBuilder) makePath(nodeID int) []string {
  60. return []string{distlock.IPFS_LOCK_PATH_PREFIX, strconv.Itoa(nodeID)}
  61. }

公共库

Contributors (1)