lev1.go 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. // package lev1 -- сборка уровня 1.
  2. package lev1
  3. import (
  4. "context"
  5. "fmt"
  6. mL0 "gitp78su.ipnodns.ru/svi/kern/v4/lev0"
  7. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
  8. mKt "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
  9. "gitp78su.ipnodns.ru/svi/kern/v4/lev1/kint"
  10. "gitp78su.ipnodns.ru/svi/kern/v4/lev1/local_ctx"
  11. "gitp78su.ipnodns.ru/svi/kern/v4/lev1/log_buf"
  12. "gitp78su.ipnodns.ru/svi/kern/v4/lev1/mock_env"
  13. "gitp78su.ipnodns.ru/svi/kern/v4/lev1/safe_bool"
  14. "gitp78su.ipnodns.ru/svi/kern/v4/lev1/safe_bool_react"
  15. "gitp78su.ipnodns.ru/svi/kern/v4/lev1/safe_int"
  16. "gitp78su.ipnodns.ru/svi/kern/v4/lev1/safe_string"
  17. )
  18. type IMockEnv = mock_env.IMockEnv
  19. // MakeEnv -- возвращает новое мок-окружение.
  20. func MakeEnv() IMockEnv {
  21. sf := mock_env.MakeEnv()
  22. return sf
  23. }
  24. // OptionLogBuf -- опция для конфигурирования ILogBuf.
  25. type OptionLogBuf = log_buf.OptionLogBuf
  26. // OptPrefix -- устанавливает префикс в сообщениях.
  27. func OptPrefix(prefix string) OptionLogBuf {
  28. return log_buf.OptPrefix(prefix)
  29. }
  30. // OptIsTerm -- устанавливает признак вывода в терминал.
  31. func OptIsTerm(isTerm bool) OptionLogBuf {
  32. return log_buf.OptIsTerm(isTerm)
  33. }
  34. // NewLogBuf -- возвращает новый буферизованный лог.
  35. func NewLogBuf(opts ...log_buf.OptionLogBuf) mKt.ILogBuf {
  36. log := log_buf.NewLogBuf(opts...)
  37. return log
  38. }
  39. // NewSafeString -- возвращает новую потокобезопасную строку.
  40. func NewSafeString() mKt.ISafeString {
  41. str := safe_string.NewSafeString()
  42. return str
  43. }
  44. // NewSafeIntFromStr -- возвращает новое потокобезопасное целое из строки.
  45. func NewSafeIntFromStr(strVal string) *mL0.Result[mKt.ISafeInt] {
  46. return safe_int.NewSafeIntFromStr(strVal)
  47. }
  48. // NewSafeIntGetenv -- возвращает новое потокобезопасное целое из окружения.
  49. func NewSafeIntGetenv(env string) *mL0.Result[mKt.ISafeInt] {
  50. return safe_int.NewSafeIntGetenv(env)
  51. }
  52. // NewSafeInt -- возвращает новую потокобезопасную целочисленную переменную.
  53. func NewSafeInt(val int) mKt.ISafeInt {
  54. val_ := safe_int.NewSafeInt(val)
  55. return val_
  56. }
  57. // NewSafeBoolReact -- возвращает новую потокобезопасную реактивную булеву переменную.
  58. func NewSafeBoolReact() mKt.ISafeBoolReact {
  59. val := safe_bool_react.NewSafeBoolReact()
  60. return val
  61. }
  62. // NewSafeBool -- возвращает новый потокобезопасный булевый признак.
  63. func NewSafeBool() mKt.ISafeBool {
  64. sb := safe_bool.NewSafeBool()
  65. return sb
  66. }
  67. // FnHassert -- проверяет с жёстким падением условие.
  68. type FnHassert = helpers.FnHassert
  69. // Hassert -- возвращает ссылку на функцию Hassert.
  70. func Hassert() FnHassert {
  71. return helpers.Hassert
  72. }
  73. // FnAssert -- проверка на правильность утверждения с падением в панику на локальном стенде (soft assert).
  74. type FnAssert = helpers.FnAssert
  75. // Assert -- возвращает ссылку на функцию Assert.
  76. func Assert() FnAssert {
  77. return helpers.Assert
  78. }
  79. // SleepMs -- спит миллисекунду.
  80. func SleepMs() {
  81. helpers.SleepMs()
  82. }
  83. // NewInt -- возвращает новую целочисленную переменную.
  84. func NewInt(val int) mKt.Int {
  85. val_ := kint.NewInt(val)
  86. return val_
  87. }
  88. // NewLocalCtx -- возвращает новый локальный контекст.
  89. func NewLocalCtx(ctx context.Context) *mL0.Result[mKt.ILocalCtx] {
  90. resCtx := local_ctx.NewLocalCtx(ctx)
  91. if resCtx.IsErr() {
  92. err := fmt.Errorf("NewLocalCtx(): err=\n\t%w", resCtx.Err())
  93. return mL0.NewErr[mKt.ILocalCtx](err)
  94. }
  95. return mL0.NewRes(mKt.ILocalCtx(resCtx.Val()))
  96. }