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.

cache.go 3.4 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. package agent
  2. import (
  3. "gitlink.org.cn/cloudream/common/pkgs/mq"
  4. cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
  5. )
  6. type CacheService interface {
  7. CheckCache(msg *CheckCache) (*CheckCacheResp, *mq.CodeMessage)
  8. CacheGC(msg *CacheGC) (*CacheGCResp, *mq.CodeMessage)
  9. StartCacheMovePackage(msg *StartCacheMovePackage) (*StartCacheMovePackageResp, *mq.CodeMessage)
  10. WaitCacheMovePackage(msg *WaitCacheMovePackage) (*WaitCacheMovePackageResp, *mq.CodeMessage)
  11. }
  12. // 检查节点上的IPFS
  13. var _ = Register(Service.CheckCache)
  14. type CheckCache struct {
  15. mq.MessageBodyBase
  16. }
  17. type CheckCacheResp struct {
  18. mq.MessageBodyBase
  19. FileHashes []string `json:"fileHashes"`
  20. }
  21. func NewCheckCache() *CheckCache {
  22. return &CheckCache{}
  23. }
  24. func NewCheckCacheResp(fileHashes []string) *CheckCacheResp {
  25. return &CheckCacheResp{
  26. FileHashes: fileHashes,
  27. }
  28. }
  29. func (client *Client) CheckCache(msg *CheckCache, opts ...mq.RequestOption) (*CheckCacheResp, error) {
  30. return mq.Request(Service.CheckCache, client.rabbitCli, msg, opts...)
  31. }
  32. // 清理Cache中不用的文件
  33. var _ = Register(Service.CacheGC)
  34. type CacheGC struct {
  35. mq.MessageBodyBase
  36. PinnedFileHashes []string `json:"pinnedFileHashes"`
  37. }
  38. type CacheGCResp struct {
  39. mq.MessageBodyBase
  40. }
  41. func ReqCacheGC(pinnedFileHashes []string) *CacheGC {
  42. return &CacheGC{
  43. PinnedFileHashes: pinnedFileHashes,
  44. }
  45. }
  46. func RespCacheGC() *CacheGCResp {
  47. return &CacheGCResp{}
  48. }
  49. func (client *Client) CacheGC(msg *CacheGC, opts ...mq.RequestOption) (*CacheGCResp, error) {
  50. return mq.Request(Service.CacheGC, client.rabbitCli, msg, opts...)
  51. }
  52. // 将Package的缓存移动到这个节点
  53. var _ = Register(Service.StartCacheMovePackage)
  54. type StartCacheMovePackage struct {
  55. mq.MessageBodyBase
  56. UserID cdssdk.UserID `json:"userID"`
  57. PackageID cdssdk.PackageID `json:"packageID"`
  58. }
  59. type StartCacheMovePackageResp struct {
  60. mq.MessageBodyBase
  61. TaskID string `json:"taskID"`
  62. }
  63. func NewStartCacheMovePackage(userID cdssdk.UserID, packageID cdssdk.PackageID) *StartCacheMovePackage {
  64. return &StartCacheMovePackage{
  65. UserID: userID,
  66. PackageID: packageID,
  67. }
  68. }
  69. func NewStartCacheMovePackageResp(taskID string) *StartCacheMovePackageResp {
  70. return &StartCacheMovePackageResp{
  71. TaskID: taskID,
  72. }
  73. }
  74. func (client *Client) StartCacheMovePackage(msg *StartCacheMovePackage, opts ...mq.RequestOption) (*StartCacheMovePackageResp, error) {
  75. return mq.Request(Service.StartCacheMovePackage, client.rabbitCli, msg, opts...)
  76. }
  77. // 将Package的缓存移动到这个节点
  78. var _ = Register(Service.WaitCacheMovePackage)
  79. type WaitCacheMovePackage struct {
  80. mq.MessageBodyBase
  81. TaskID string `json:"taskID"`
  82. WaitTimeoutMs int64 `json:"waitTimeout"`
  83. }
  84. type WaitCacheMovePackageResp struct {
  85. mq.MessageBodyBase
  86. IsComplete bool `json:"isComplete"`
  87. Error string `json:"error"`
  88. }
  89. func NewWaitCacheMovePackage(taskID string, waitTimeoutMs int64) *WaitCacheMovePackage {
  90. return &WaitCacheMovePackage{
  91. TaskID: taskID,
  92. WaitTimeoutMs: waitTimeoutMs,
  93. }
  94. }
  95. func NewWaitCacheMovePackageResp(isComplete bool, err string) *WaitCacheMovePackageResp {
  96. return &WaitCacheMovePackageResp{
  97. IsComplete: isComplete,
  98. Error: err,
  99. }
  100. }
  101. func (client *Client) WaitCacheMovePackage(msg *WaitCacheMovePackage, opts ...mq.RequestOption) (*WaitCacheMovePackageResp, error) {
  102. return mq.Request(Service.WaitCacheMovePackage, client.rabbitCli, msg, opts...)
  103. }

本项目旨在将云际存储公共基础设施化,使个人及企业可低门槛使用高效的云际存储服务(安装开箱即用云际存储客户端即可,无需关注其他组件的部署),同时支持用户灵活便捷定制云际存储的功能细节。