kern.go 5.0 KB

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