kern.go 4.7 KB

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