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.

node.go 1.3 kB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package services
  2. import (
  3. "fmt"
  4. cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
  5. stgglb "gitlink.org.cn/cloudream/storage/common/globals"
  6. coormq "gitlink.org.cn/cloudream/storage/common/pkgs/mq/coordinator"
  7. )
  8. // HubService 是关于节点操作的服务结构体
  9. type HubService struct {
  10. *Service
  11. }
  12. // HubSvc 创建并返回一个HubService的实例
  13. func (svc *Service) HubSvc() *HubService {
  14. return &HubService{Service: svc}
  15. }
  16. // GetHubs 根据提供的节点ID列表,获取对应的节点信息
  17. // 参数:
  18. //
  19. // hubIDs []cdssdk.HubID - 需要查询的节点ID列表
  20. //
  21. // 返回值:
  22. //
  23. // []cdssdk.Hub - 获取到的节点信息列表
  24. // error - 如果过程中发生错误,则返回错误信息
  25. func (svc *HubService) GetHubs(hubIDs []cdssdk.HubID) ([]cdssdk.Hub, error) {
  26. // 从协调器MQ池中获取一个客户端实例
  27. coorCli, err := stgglb.CoordinatorMQPool.Acquire()
  28. if err != nil {
  29. return nil, fmt.Errorf("new coordinator client: %w", err)
  30. }
  31. // 确保在函数结束时释放客户端实例回池
  32. defer stgglb.CoordinatorMQPool.Release(coorCli)
  33. // 向协调器发送获取节点信息的请求
  34. getResp, err := coorCli.GetHubs(coormq.NewGetHubs(hubIDs))
  35. if err != nil {
  36. return nil, fmt.Errorf("requesting to coordinator: %w", err)
  37. }
  38. // 返回获取到的节点信息
  39. return getResp.Hubs, nil
  40. }

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