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.

main.go 1.8 kB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. _ "google.golang.org/grpc/balancer/grpclb"
  6. "gitlink.org.cn/cloudream/common/pkgs/logger"
  7. "gitlink.org.cn/cloudream/storage/client/internal/cmdline"
  8. "gitlink.org.cn/cloudream/storage/client/internal/config"
  9. "gitlink.org.cn/cloudream/storage/client/internal/services"
  10. "gitlink.org.cn/cloudream/storage/client/internal/task"
  11. stgglb "gitlink.org.cn/cloudream/storage/common/globals"
  12. "gitlink.org.cn/cloudream/storage/common/pkgs/distlock"
  13. )
  14. func main() {
  15. err := config.Init()
  16. if err != nil {
  17. fmt.Printf("init config failed, err: %s", err.Error())
  18. os.Exit(1)
  19. }
  20. err = logger.Init(&config.Cfg().Logger)
  21. if err != nil {
  22. fmt.Printf("init logger failed, err: %s", err.Error())
  23. os.Exit(1)
  24. }
  25. stgglb.InitLocal(&config.Cfg().Local)
  26. stgglb.InitMQPool(&config.Cfg().RabbitMQ)
  27. stgglb.InitAgentRPCPool(&config.Cfg().AgentGRPC)
  28. if config.Cfg().IPFS != nil {
  29. logger.Infof("IPFS config is not empty, so create a ipfs client")
  30. stgglb.InitIPFSPool(config.Cfg().IPFS)
  31. }
  32. distlockSvc, err := distlock.NewService(&config.Cfg().DistLock)
  33. if err != nil {
  34. logger.Warnf("new distlock service failed, err: %s", err.Error())
  35. os.Exit(1)
  36. }
  37. go serveDistLock(distlockSvc)
  38. taskMgr := task.NewManager(distlockSvc)
  39. svc, err := services.NewService(distlockSvc, &taskMgr)
  40. if err != nil {
  41. logger.Warnf("new services failed, err: %s", err.Error())
  42. os.Exit(1)
  43. }
  44. cmds, err := cmdline.NewCommandline(svc)
  45. if err != nil {
  46. logger.Warnf("new command line failed, err: %s", err.Error())
  47. os.Exit(1)
  48. }
  49. cmds.DispatchCommand(os.Args[1:])
  50. }
  51. func serveDistLock(svc *distlock.Service) {
  52. logger.Info("start serving distlock")
  53. err := svc.Serve()
  54. if err != nil {
  55. logger.Errorf("distlock stopped with error: %s", err.Error())
  56. }
  57. logger.Info("distlock stopped")
  58. }

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