instance.go 817 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package kos
  2. import (
  3. "git.nspix.com/golang/kos/entry/cli"
  4. "git.nspix.com/golang/kos/entry/http"
  5. _ "git.nspix.com/golang/kos/pkg/request"
  6. _ "git.nspix.com/golang/kos/util/bs"
  7. _ "git.nspix.com/golang/kos/util/fetch"
  8. _ "git.nspix.com/golang/kos/util/random"
  9. _ "git.nspix.com/golang/kos/util/reflection"
  10. "sync"
  11. )
  12. var (
  13. once sync.Once
  14. std *application
  15. )
  16. func initApplication(cbs ...Option) {
  17. once.Do(func() {
  18. std = New(cbs...)
  19. })
  20. }
  21. func Init(cbs ...Option) *application {
  22. initApplication(cbs...)
  23. return std
  24. }
  25. func Node() *Info {
  26. initApplication()
  27. return std.Info()
  28. }
  29. func Http() *http.Server {
  30. initApplication()
  31. return std.Http()
  32. }
  33. func Command() *cli.Server {
  34. initApplication()
  35. return std.Command()
  36. }
  37. func Handle(method string, cb HandleFunc) {
  38. initApplication()
  39. std.Handle(method, cb)
  40. }