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.

object.go 2.3 kB

2 years ago
2 years ago
2 years ago
2 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package services
  2. import (
  3. "gitlink.org.cn/cloudream/common/consts/errorcode"
  4. "gitlink.org.cn/cloudream/common/pkgs/logger"
  5. "gitlink.org.cn/cloudream/common/pkgs/mq"
  6. coormq "gitlink.org.cn/cloudream/storage/common/pkgs/mq/coordinator"
  7. )
  8. func (svc *Service) GetPackageObjectCacheInfos(msg *coormq.GetPackageObjectCacheInfos) (*coormq.GetPackageObjectCacheInfosResp, *mq.CodeMessage) {
  9. pkg, err := svc.db.Package().GetUserPackage(svc.db.SQLCtx(), msg.UserID, msg.PackageID)
  10. if err != nil {
  11. logger.WithField("PackageID", msg.PackageID).
  12. Warnf("getting package: %s", err.Error())
  13. return nil, mq.Failed(errorcode.OperationFailed, "get package failed")
  14. }
  15. if pkg.Redundancy.IsRepInfo() {
  16. infos, err := svc.db.ObjectRep().GetPackageObjectCacheInfos(svc.db.SQLCtx(), msg.PackageID)
  17. if err != nil {
  18. logger.WithField("PackageID", msg.PackageID).
  19. Warnf("getting rep package object cache infos: %s", err.Error())
  20. return nil, mq.Failed(errorcode.OperationFailed, "get rep package object cache infos failed")
  21. }
  22. return mq.ReplyOK(coormq.NewGetPackageObjectCacheInfosResp(infos))
  23. }
  24. // TODO EC
  25. return nil, mq.Failed(errorcode.OperationFailed, "not implement yet")
  26. }
  27. func (svc *Service) GetPackageObjectRepData(msg *coormq.GetPackageObjectRepData) (*coormq.GetPackageObjectRepDataResp, *mq.CodeMessage) {
  28. data, err := svc.db.ObjectRep().GetWithNodeIDInPackage(svc.db.SQLCtx(), msg.PackageID)
  29. if err != nil {
  30. logger.WithField("PackageID", msg.PackageID).
  31. Warnf("query object rep and node id in package: %s", err.Error())
  32. return nil, mq.Failed(errorcode.OperationFailed, "query object rep and node id in package failed")
  33. }
  34. return mq.ReplyOK(coormq.NewGetPackageObjectRepDataResp(data))
  35. }
  36. func (svc *Service) GetPackageObjectECData(msg *coormq.GetPackageObjectECData) (*coormq.GetPackageObjectECDataResp, *mq.CodeMessage) {
  37. data, err := svc.db.ObjectBlock().GetWithNodeIDInPackage(svc.db.SQLCtx(), msg.PackageID)
  38. if err != nil {
  39. logger.WithField("PackageID", msg.PackageID).
  40. Warnf("query object ec and node id in package: %s", err.Error())
  41. return nil, mq.Failed(errorcode.OperationFailed, "query object ec and node id in package failed")
  42. }
  43. return mq.ReplyOK(coormq.NewGetPackageObjectECDataResp(data))
  44. }

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