kern.go 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. // package kern -- библиотека гибкого универсального облегчённого ядра для любого микросервиса
  2. package kern
  3. import (
  4. . "gitp78su.ipnodns.ru/svi/kern/kc/helpers"
  5. "gitp78su.ipnodns.ru/svi/kern/kc/safe_bool"
  6. . "gitp78su.ipnodns.ru/svi/kern/krn/kalias"
  7. "gitp78su.ipnodns.ru/svi/kern/krn/kbus/kbus_http"
  8. "gitp78su.ipnodns.ru/svi/kern/krn/kbus/kbus_http/client_bus_http"
  9. "gitp78su.ipnodns.ru/svi/kern/krn/kbus/kbus_local"
  10. "gitp78su.ipnodns.ru/svi/kern/krn/kbus/kbus_local/client_bus_local"
  11. "gitp78su.ipnodns.ru/svi/kern/krn/kctx"
  12. "gitp78su.ipnodns.ru/svi/kern/krn/kmodule"
  13. "gitp78su.ipnodns.ru/svi/kern/krn/kmonolit"
  14. "gitp78su.ipnodns.ru/svi/kern/krn/kserv_http"
  15. "gitp78su.ipnodns.ru/svi/kern/krn/kstore_kv"
  16. . "gitp78su.ipnodns.ru/svi/kern/krn/ktypes"
  17. "gitp78su.ipnodns.ru/svi/kern/mds/mod_kctx"
  18. "gitp78su.ipnodns.ru/svi/kern/mds/mod_keeper"
  19. "gitp78su.ipnodns.ru/svi/kern/mds/mod_serv_http"
  20. )
  21. // NewKernelCtx -- возвращает контекст ядра
  22. func NewKernelCtx() IKernelCtx {
  23. ctx := kctx.GetKernelCtx()
  24. return ctx
  25. }
  26. // NewKernelStoreKv -- возвращает быстрое key-value хранилище ядра
  27. func NewKernelStoreKv() IKernelStoreKv {
  28. store := kstore_kv.GetKernelStore()
  29. return store
  30. }
  31. // NewKernelServerHttp -- возвращает веб-сервер ядра
  32. func NewKernelServerHttp() IKernelServerHttp {
  33. kernServHttp := kserv_http.GetKernelServHttp()
  34. return kernServHttp
  35. }
  36. // NewSafeBool -- возвращает новый потокобезопасный булевый признак
  37. func NewSafeBool() ISafeBool {
  38. sb := safe_bool.NewSafeBool()
  39. return sb
  40. }
  41. // NewKernelBusLocal -- возвращает локальную шину данных
  42. func NewKernelBusLocal() IKernelBus {
  43. ctx := kctx.GetKernelCtx()
  44. ctx.Set("monolitName", "unknown monolit", "GetKernelBusLocal()")
  45. bus := kbus_local.GetKernelBusLocal()
  46. return bus
  47. }
  48. // NewKernelBusHttp -- возвращает HTTP шину данных
  49. func NewKernelBusHttp() IKernelBus {
  50. bus := kbus_http.GetKernelBusHttp()
  51. return bus
  52. }
  53. // NewMonolitLocal -- возвращает монолит с локальной шиной
  54. func NewMonolitLocal(name string) IKernelMonolit {
  55. ctx := kctx.GetKernelCtx()
  56. ctx.Set("isLocal", true, "bus type")
  57. for {
  58. SleepMs()
  59. if ctx.Get("isLocal") != nil {
  60. break
  61. }
  62. }
  63. monolit := kmonolit.GetMonolit(name)
  64. _ = kbus_local.GetKernelBusLocal()
  65. return monolit
  66. }
  67. // NewMonolitHttp -- возвращает монолит с локальной шиной поверх HTTP
  68. func NewMonolitHttp(name string) IKernelMonolit {
  69. ctx := kctx.GetKernelCtx()
  70. _ = kbus_http.GetKernelBusHttp()
  71. ctx.Set("isLocal", false, "bus type")
  72. for {
  73. SleepMs()
  74. if ctx.Get("isLocal") != nil {
  75. break
  76. }
  77. }
  78. monolit := kmonolit.GetMonolit(name)
  79. return monolit
  80. }
  81. // NewKernelModule -- возвращает новый модуль на ядре
  82. func NewKernelModule(name AModuleName) IKernelModule {
  83. mod := kmodule.NewKernelModule(name)
  84. return mod
  85. }
  86. // NewClientBusLocal -- возвращает клиент для работы с локальной шиной
  87. func NewClientBusLocal() IBusClient {
  88. client := client_bus_local.NewClientBusLocal()
  89. return client
  90. }
  91. // NewClientBusHttp -- возвращает клиент для работы с шиной поверх HTTP
  92. func NewClientBusHttp(url string) IBusClient {
  93. client := client_bus_http.NewClientBusHttp(url)
  94. return client
  95. }
  96. // NewModuleServHttp -- возвращает новый модуль для IKernelServHttp
  97. func NewModuleServHttp() IKernelModule {
  98. modServHttp := mod_serv_http.NewModuleServHttp()
  99. return modServHttp
  100. }
  101. // NewModuleKernelCtx -- возвращает новый модуль для IKernelCtx
  102. func NewModuleKernelCtx() IKernelModule {
  103. modKernelCtx := mod_kctx.NewModuleKernelCtx()
  104. return modKernelCtx
  105. }
  106. // NewModuleKernelKeeper -- возвращает новый модуль для IKernelKeeper
  107. func NewModuleKernelKeeper() IKernelModule {
  108. modKernelKeeper := mod_keeper.NewModuleKeeper()
  109. return modKernelKeeper
  110. }