92 lines
2.6 KiB
Go
92 lines
2.6 KiB
Go
package services
|
|
|
|
/*
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
|
|
cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
|
|
|
|
stgglb "gitlink.org.cn/cloudream/jcs-pub/common/globals"
|
|
hubmq "gitlink.org.cn/cloudream/jcs-pub/common/pkgs/mq/hub"
|
|
coormq "gitlink.org.cn/cloudream/jcs-pub/common/pkgs/mq/coordinator"
|
|
"gitlink.org.cn/cloudream/jcs-pub/common/pkgs/storage/factory"
|
|
)
|
|
|
|
type CacheService struct {
|
|
*Service
|
|
}
|
|
|
|
func (svc *Service) CacheSvc() *CacheService {
|
|
return &CacheService{Service: svc}
|
|
}
|
|
|
|
func (svc *CacheService) StartCacheMovePackage(userID cdssdk.UserID, packageID cdssdk.PackageID, stgID cdssdk.StorageID) (cdssdk.HubID, string, error) {
|
|
coorCli, err := stgglb.CoordinatorMQPool.Acquire()
|
|
if err != nil {
|
|
return 0, "", fmt.Errorf("new coordinator client: %w", err)
|
|
}
|
|
defer stgglb.CoordinatorMQPool.Release(coorCli)
|
|
|
|
getStg, err := coorCli.GetStorageDetails(coormq.ReqGetStorageDetails([]cdssdk.StorageID{stgID}))
|
|
if err != nil {
|
|
return 0, "", fmt.Errorf("get storage detail: %w", err)
|
|
}
|
|
|
|
if !factory.GetBuilder(*getStg.Storages[0]).ShardStoreDesc().Enabled() {
|
|
return 0, "", fmt.Errorf("shard storage is not enabled")
|
|
}
|
|
|
|
hubCli, err := stgglb.HubMQPool.Acquire(getStg.Storages[0].MasterHub.HubID)
|
|
if err != nil {
|
|
return 0, "", fmt.Errorf("new hub client: %w", err)
|
|
}
|
|
defer stgglb.HubMQPool.Release(hubCli)
|
|
|
|
startResp, err := hubCli.StartCacheMovePackage(hubmq.NewStartCacheMovePackage(userID, packageID, stgID))
|
|
if err != nil {
|
|
return 0, "", fmt.Errorf("start cache move package: %w", err)
|
|
}
|
|
|
|
return getStg.Storages[0].MasterHub.HubID, startResp.TaskID, nil
|
|
}
|
|
|
|
func (svc *CacheService) WaitCacheMovePackage(hubID cdssdk.HubID, taskID string, waitTimeout time.Duration) (bool, error) {
|
|
hubCli, err := stgglb.HubMQPool.Acquire(hubID)
|
|
if err != nil {
|
|
return true, fmt.Errorf("new hub client: %w", err)
|
|
}
|
|
defer stgglb.HubMQPool.Release(hubCli)
|
|
|
|
waitResp, err := hubCli.WaitCacheMovePackage(hubmq.NewWaitCacheMovePackage(taskID, waitTimeout.Milliseconds()))
|
|
if err != nil {
|
|
return true, fmt.Errorf("wait cache move package: %w", err)
|
|
}
|
|
|
|
if !waitResp.IsComplete {
|
|
return false, nil
|
|
}
|
|
|
|
if waitResp.Error != "" {
|
|
return true, fmt.Errorf("%s", waitResp.Error)
|
|
}
|
|
|
|
return true, nil
|
|
}
|
|
|
|
func (svc *CacheService) CacheRemovePackage(packageID cdssdk.PackageID, stgID cdssdk.StorageID) error {
|
|
coorCli, err := stgglb.CoordinatorMQPool.Acquire()
|
|
if err != nil {
|
|
return fmt.Errorf("new hub client: %w", err)
|
|
}
|
|
defer stgglb.CoordinatorMQPool.Release(coorCli)
|
|
|
|
_, err = coorCli.CacheRemovePackage(coormq.ReqCacheRemoveMovedPackage(packageID, stgID))
|
|
if err != nil {
|
|
return fmt.Errorf("requesting to coordinator: %w", err)
|
|
}
|
|
|
|
return nil
|
|
}
|
|
*/
|