global.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. // Package global provides global variables and interfaces for accessing web and subscription servers.
  2. package global
  3. import (
  4. "context"
  5. _ "unsafe"
  6. "github.com/robfig/cron/v3"
  7. )
  8. var (
  9. webServer WebServer
  10. subServer SubServer
  11. )
  12. // WebServer interface defines methods for accessing the web server instance.
  13. type WebServer interface {
  14. GetCron() *cron.Cron // Get the cron scheduler
  15. GetCtx() context.Context // Get the server context
  16. GetWSHub() interface{} // Get the WebSocket hub (using interface{} to avoid circular dependency)
  17. }
  18. // SubServer interface defines methods for accessing the subscription server instance.
  19. type SubServer interface {
  20. GetCtx() context.Context // Get the server context
  21. }
  22. // SetWebServer sets the global web server instance.
  23. func SetWebServer(s WebServer) {
  24. webServer = s
  25. }
  26. // GetWebServer returns the global web server instance.
  27. func GetWebServer() WebServer {
  28. return webServer
  29. }
  30. // SetSubServer sets the global subscription server instance.
  31. func SetSubServer(s SubServer) {
  32. subServer = s
  33. }
  34. // GetSubServer returns the global subscription server instance.
  35. func GetSubServer() SubServer {
  36. return subServer
  37. }