package agent import ( "gitlink.org.cn/cloudream/common/pkgs/mq" cdssdk "gitlink.org.cn/cloudream/common/sdks/storage" ) type CacheService interface { CheckCache(msg *CheckCache) (*CheckCacheResp, *mq.CodeMessage) CacheGC(msg *CacheGC) (*CacheGCResp, *mq.CodeMessage) StartCacheMovePackage(msg *StartCacheMovePackage) (*StartCacheMovePackageResp, *mq.CodeMessage) WaitCacheMovePackage(msg *WaitCacheMovePackage) (*WaitCacheMovePackageResp, *mq.CodeMessage) } // 检查节点上的IPFS var _ = Register(Service.CheckCache) type CheckCache struct { mq.MessageBodyBase } type CheckCacheResp struct { mq.MessageBodyBase FileHashes []string `json:"fileHashes"` } func NewCheckCache() *CheckCache { return &CheckCache{} } func NewCheckCacheResp(fileHashes []string) *CheckCacheResp { return &CheckCacheResp{ FileHashes: fileHashes, } } func (client *Client) CheckCache(msg *CheckCache, opts ...mq.RequestOption) (*CheckCacheResp, error) { return mq.Request(Service.CheckCache, client.rabbitCli, msg, opts...) } // 清理Cache中不用的文件 var _ = Register(Service.CacheGC) type CacheGC struct { mq.MessageBodyBase PinnedFileHashes []string `json:"pinnedFileHashes"` } type CacheGCResp struct { mq.MessageBodyBase } func ReqCacheGC(pinnedFileHashes []string) *CacheGC { return &CacheGC{ PinnedFileHashes: pinnedFileHashes, } } func RespCacheGC() *CacheGCResp { return &CacheGCResp{} } func (client *Client) CacheGC(msg *CacheGC, opts ...mq.RequestOption) (*CacheGCResp, error) { return mq.Request(Service.CacheGC, client.rabbitCli, msg, opts...) } // 将Package的缓存移动到这个节点 var _ = Register(Service.StartCacheMovePackage) type StartCacheMovePackage struct { mq.MessageBodyBase UserID cdssdk.UserID `json:"userID"` PackageID cdssdk.PackageID `json:"packageID"` } type StartCacheMovePackageResp struct { mq.MessageBodyBase TaskID string `json:"taskID"` } func NewStartCacheMovePackage(userID cdssdk.UserID, packageID cdssdk.PackageID) *StartCacheMovePackage { return &StartCacheMovePackage{ UserID: userID, PackageID: packageID, } } func NewStartCacheMovePackageResp(taskID string) *StartCacheMovePackageResp { return &StartCacheMovePackageResp{ TaskID: taskID, } } func (client *Client) StartCacheMovePackage(msg *StartCacheMovePackage, opts ...mq.RequestOption) (*StartCacheMovePackageResp, error) { return mq.Request(Service.StartCacheMovePackage, client.rabbitCli, msg, opts...) } // 将Package的缓存移动到这个节点 var _ = Register(Service.WaitCacheMovePackage) type WaitCacheMovePackage struct { mq.MessageBodyBase TaskID string `json:"taskID"` WaitTimeoutMs int64 `json:"waitTimeout"` } type WaitCacheMovePackageResp struct { mq.MessageBodyBase IsComplete bool `json:"isComplete"` Error string `json:"error"` } func NewWaitCacheMovePackage(taskID string, waitTimeoutMs int64) *WaitCacheMovePackage { return &WaitCacheMovePackage{ TaskID: taskID, WaitTimeoutMs: waitTimeoutMs, } } func NewWaitCacheMovePackageResp(isComplete bool, err string) *WaitCacheMovePackageResp { return &WaitCacheMovePackageResp{ IsComplete: isComplete, Error: err, } } func (client *Client) WaitCacheMovePackage(msg *WaitCacheMovePackage, opts ...mq.RequestOption) (*WaitCacheMovePackageResp, error) { return mq.Request(Service.WaitCacheMovePackage, client.rabbitCli, msg, opts...) }