|
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- package services
-
- import (
- "fmt"
-
- cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
- stgglb "gitlink.org.cn/cloudream/storage/common/globals"
- coormq "gitlink.org.cn/cloudream/storage/common/pkgs/mq/coordinator"
- )
-
- // HubService 是关于节点操作的服务结构体
- type HubService struct {
- *Service
- }
-
- // HubSvc 创建并返回一个HubService的实例
- func (svc *Service) HubSvc() *HubService {
- return &HubService{Service: svc}
- }
-
- // GetHubs 根据提供的节点ID列表,获取对应的节点信息
- // 参数:
- //
- // hubIDs []cdssdk.HubID - 需要查询的节点ID列表
- //
- // 返回值:
- //
- // []cdssdk.Hub - 获取到的节点信息列表
- // error - 如果过程中发生错误,则返回错误信息
- func (svc *HubService) GetHubs(hubIDs []cdssdk.HubID) ([]cdssdk.Hub, error) {
- // 从协调器MQ池中获取一个客户端实例
- coorCli, err := stgglb.CoordinatorMQPool.Acquire()
- if err != nil {
- return nil, fmt.Errorf("new coordinator client: %w", err)
- }
- // 确保在函数结束时释放客户端实例回池
- defer stgglb.CoordinatorMQPool.Release(coorCli)
-
- // 向协调器发送获取节点信息的请求
- getResp, err := coorCli.GetHubs(coormq.NewGetHubs(hubIDs))
- if err != nil {
- return nil, fmt.Errorf("requesting to coordinator: %w", err)
- }
-
- // 返回获取到的节点信息
- return getResp.Hubs, nil
- }
|