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.

agent.go 1.3 kB

2 years ago
2 years ago
1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package mq
  2. import (
  3. "gitlink.org.cn/cloudream/common/pkgs/logger"
  4. "gitlink.org.cn/cloudream/common/pkgs/mq"
  5. "gitlink.org.cn/cloudream/storage/common/consts"
  6. stgglb "gitlink.org.cn/cloudream/storage/common/globals"
  7. agtmq "gitlink.org.cn/cloudream/storage/common/pkgs/mq/agent"
  8. )
  9. // GetState 用于获取IPFS节点的状态
  10. // 参数:
  11. // msg: 包含请求信息的GetState消息结构体
  12. // 返回值:
  13. // *agtmq.GetStateResp: 包含响应信息的GetStateResp消息结构体
  14. // *mq.CodeMessage: 错误代码和消息
  15. func (svc *Service) GetState(msg *agtmq.GetState) (*agtmq.GetStateResp, *mq.CodeMessage) {
  16. var ipfsState string
  17. // 尝试从IPFS池中获取一个客户端实例
  18. ipfsCli, err := stgglb.IPFSPool.Acquire()
  19. if err != nil {
  20. // 如果获取失败,记录警告信息,并设置IPFS状态为不可用
  21. logger.Warnf("new ipfs client: %s", err.Error())
  22. ipfsState = consts.IPFSStateUnavailable
  23. } else {
  24. // 如果获取成功,检查IPFS节点是否正常
  25. if ipfsCli.IsUp() {
  26. ipfsState = consts.IPFSStateOK
  27. } else {
  28. // 如果节点不正常,设置IPFS状态为不可用
  29. ipfsState = consts.IPFSStateUnavailable
  30. }
  31. // 释放IPFS客户端实例
  32. ipfsCli.Close()
  33. }
  34. // 构造并返回响应
  35. return mq.ReplyOK(agtmq.NewGetStateResp(ipfsState))
  36. }

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