kern.go 4.2 KB

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