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.

sysevent.go 1.2 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package cmdline
  2. import (
  3. "context"
  4. "fmt"
  5. "github.com/spf13/cobra"
  6. "gitlink.org.cn/cloudream/storage/client/internal/config"
  7. "gitlink.org.cn/cloudream/storage/common/pkgs/sysevent"
  8. )
  9. func init() {
  10. cmd := &cobra.Command{
  11. Use: "sysevent",
  12. }
  13. rootCmd.AddCommand(cmd)
  14. cmd.AddCommand(&cobra.Command{
  15. Use: "watch",
  16. Short: "Watch system events",
  17. Run: func(cmd *cobra.Command, args []string) {
  18. watchSysEvent(GetCmdCtx(cmd))
  19. },
  20. })
  21. }
  22. func watchSysEvent(cmdCtx *CommandContext) {
  23. host, err := sysevent.NewWatcherHost(sysevent.ConfigFromMQConfig(config.Cfg().RabbitMQ))
  24. if err != nil {
  25. fmt.Println(err)
  26. return
  27. }
  28. ch := host.Start()
  29. host.AddWatcherFn(func(event sysevent.SysEvent) {
  30. fmt.Println(event.String())
  31. })
  32. for {
  33. e, err := ch.Receive().Wait(context.Background())
  34. if err != nil {
  35. fmt.Println(err)
  36. return
  37. }
  38. switch e := e.(type) {
  39. case sysevent.PublishError:
  40. fmt.Printf("Publish error: %v\n", e.Err)
  41. case sysevent.PublisherExited:
  42. if e.Err != nil {
  43. fmt.Printf("Publisher exited with error: %v\n", e.Err)
  44. }
  45. return
  46. case sysevent.OtherError:
  47. fmt.Printf("Other error: %v\n", e.Err)
  48. }
  49. }
  50. }

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