kern.go 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. // package kern -- библиотека гибкого универсального облегчённого ядра для любого микросервиса
  2. package kern
  3. import (
  4. "context"
  5. . "gitp78su.ipnodns.ru/svi/kern/kc/helpers"
  6. "gitp78su.ipnodns.ru/svi/kern/kc/local_ctx"
  7. "gitp78su.ipnodns.ru/svi/kern/kc/log_buf"
  8. "gitp78su.ipnodns.ru/svi/kern/kc/safe_bool"
  9. "gitp78su.ipnodns.ru/svi/kern/kc/safe_bool_react"
  10. "gitp78su.ipnodns.ru/svi/kern/kc/safe_int"
  11. "gitp78su.ipnodns.ru/svi/kern/kc/safe_string"
  12. . "gitp78su.ipnodns.ru/svi/kern/krn/kalias"
  13. "gitp78su.ipnodns.ru/svi/kern/krn/kbus/kbus_http"
  14. "gitp78su.ipnodns.ru/svi/kern/krn/kbus/kbus_http/client_bus_http"
  15. "gitp78su.ipnodns.ru/svi/kern/krn/kbus/kbus_local"
  16. "gitp78su.ipnodns.ru/svi/kern/krn/kbus/kbus_local/client_bus_local"
  17. "gitp78su.ipnodns.ru/svi/kern/krn/kctx"
  18. "gitp78su.ipnodns.ru/svi/kern/krn/kmodule"
  19. "gitp78su.ipnodns.ru/svi/kern/krn/kmonolit"
  20. "gitp78su.ipnodns.ru/svi/kern/krn/kserv_http"
  21. "gitp78su.ipnodns.ru/svi/kern/krn/kstore_kv"
  22. . "gitp78su.ipnodns.ru/svi/kern/krn/ktypes"
  23. "gitp78su.ipnodns.ru/svi/kern/mds/mod_kctx"
  24. "gitp78su.ipnodns.ru/svi/kern/mds/mod_keeper"
  25. "gitp78su.ipnodns.ru/svi/kern/mds/mod_serv_http"
  26. )
  27. // GetKernelCtx -- возвращает контекст ядра
  28. func GetKernelCtx() IKernelCtx {
  29. ctx := kctx.GetKernelCtx()
  30. return ctx
  31. }
  32. // GetKernelStoreKv -- возвращает быстрое key-value хранилище ядра
  33. func GetKernelStoreKv() IKernelStoreKv {
  34. store := kstore_kv.GetKernelStore()
  35. return store
  36. }
  37. // GetKernelServerHttp -- возвращает веб-сервер ядра
  38. func GetKernelServerHttp() IKernelServerHttp {
  39. kernServHttp := kserv_http.GetKernelServHttp()
  40. return kernServHttp
  41. }
  42. // NewSafeBool -- возвращает новый потокобезопасный булевый признак
  43. func NewSafeBool() ISafeBool {
  44. sb := safe_bool.NewSafeBool()
  45. return sb
  46. }
  47. // GetKernelBusLocal -- возвращает локальную шину данных
  48. func GetKernelBusLocal() IKernelBus {
  49. ctx := kctx.GetKernelCtx()
  50. ctx.Set("monolitName", "unknown monolit", "GetKernelBusLocal()")
  51. bus := kbus_local.GetKernelBusLocal()
  52. return bus
  53. }
  54. // GetKernelBusHttp -- возвращает HTTP шину данных
  55. func GetKernelBusHttp() IKernelBus {
  56. bus := kbus_http.GetKernelBusHttp()
  57. return bus
  58. }
  59. // GetMonolitLocal -- возвращает монолит с локальной шиной
  60. func GetMonolitLocal(name string) IKernelMonolit {
  61. ctx := kctx.GetKernelCtx()
  62. ctx.Set("isLocal", true, "bus type")
  63. for {
  64. SleepMs()
  65. if ctx.Get("isLocal") != nil {
  66. break
  67. }
  68. }
  69. monolit := kmonolit.GetMonolit(name)
  70. _ = kbus_local.GetKernelBusLocal()
  71. return monolit
  72. }
  73. // GetMonolitHttp -- возвращает монолит с локальной шиной поверх HTTP
  74. func GetMonolitHttp(name string) IKernelMonolit {
  75. ctx := kctx.GetKernelCtx()
  76. _ = kbus_http.GetKernelBusHttp()
  77. ctx.Set("isLocal", false, "bus type")
  78. for {
  79. SleepMs()
  80. if ctx.Get("isLocal") != nil {
  81. break
  82. }
  83. }
  84. monolit := kmonolit.GetMonolit(name)
  85. return monolit
  86. }
  87. // NewKernelModule -- возвращает новый модуль на ядре
  88. func NewKernelModule(name AModuleName) IKernelModule {
  89. mod := kmodule.NewKernelModule(name)
  90. return mod
  91. }
  92. // NewClientBusLocal -- возвращает клиент для работы с локальной шиной
  93. func NewClientBusLocal() IBusClient {
  94. client := client_bus_local.NewClientBusLocal()
  95. return client
  96. }
  97. // NewClientBusHttp -- возвращает клиент для работы с шиной поверх HTTP
  98. func NewClientBusHttp(url string) IBusClient {
  99. client := client_bus_http.NewClientBusHttp(url)
  100. return client
  101. }
  102. // GetModuleServHttp -- возвращает модуль для IKernelServHttp
  103. func GetModuleServHttp() IKernelModule {
  104. modServHttp := mod_serv_http.GetModuleServHttp()
  105. return modServHttp
  106. }
  107. // GetModuleKernelCtx -- возвращает модуль для IKernelCtx
  108. func GetModuleKernelCtx() IKernelModule {
  109. modKernelCtx := mod_kctx.GetModuleKernelCtx()
  110. return modKernelCtx
  111. }
  112. // GetModuleKernelKeeper -- возвращает модуль для IKernelKeeper
  113. func GetModuleKernelKeeper() IKernelModule {
  114. modKernelKeeper := mod_keeper.GetModuleKeeper()
  115. return modKernelKeeper
  116. }
  117. // NewLogBuf -- возвращает новый буферизованный лог
  118. func NewLogBuf() ILogBuf {
  119. log := log_buf.NewLogBuf()
  120. return log
  121. }
  122. // NewSafeBoolReact -- возвращает новую потокобезопасную реактивную булеву переменную
  123. func NewSafeBoolReact() ISafeBoolReact {
  124. val := safe_bool_react.NewSafeBoolReact()
  125. return val
  126. }
  127. // NewSafeInt -- возвращает новую потокобезопасную целочисленную переменную
  128. func NewSafeInt() ISafeInt {
  129. val := safe_int.NewSafeInt()
  130. return val
  131. }
  132. // NewLocalCtx -- возвращает новый локальный контекст
  133. func NewLocalCtx(ctx context.Context) ILocalCtx {
  134. ctx_ := local_ctx.NewLocalCtx(ctx)
  135. return ctx_
  136. }
  137. // NewSafeString -- возвращает новую потокобезопасную строку
  138. func NewSafeString() ISafeString {
  139. str := safe_string.NewSafeString()
  140. return str
  141. }