JCS-pub/client/internal/services/node.go

48 lines
1.3 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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"
)
// NodeService 是关于节点操作的服务结构体
type NodeService struct {
*Service
}
// NodeSvc 创建并返回一个NodeService的实例
func (svc *Service) NodeSvc() *NodeService {
return &NodeService{Service: svc}
}
// GetNodes 根据提供的节点ID列表获取对应的节点信息
// 参数:
//
// nodeIDs []cdssdk.NodeID - 需要查询的节点ID列表
//
// 返回值:
//
// []cdssdk.Node - 获取到的节点信息列表
// error - 如果过程中发生错误,则返回错误信息
func (svc *NodeService) GetNodes(nodeIDs []cdssdk.NodeID) ([]cdssdk.Node, 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.GetNodes(coormq.NewGetNodes(nodeIDs))
if err != nil {
return nil, fmt.Errorf("requesting to coordinator: %w", err)
}
// 返回获取到的节点信息
return getResp.Nodes, nil
}