kbus_local.go 828 B

12345678910111213141516171819202122232425262728293031323334
  1. // package kbus_local -- реализация локальной шины сообщений.
  2. package kbus_local
  3. import (
  4. "fmt"
  5. mL0 "gitp78su.ipnodns.ru/svi/kern/v4/lev0"
  6. "gitp78su.ipnodns.ru/svi/kern/v4/lev2/kbus_base"
  7. )
  8. // Локальная шина данных.
  9. type kernelBusLocal struct {
  10. *kbus_base.KBusBase
  11. }
  12. var (
  13. bus *kernelBusLocal
  14. )
  15. // GetKernelBusLocal -- возвращает локальную шину сообщений.
  16. func GetKernelBusLocal() *mL0.Result[*kernelBusLocal] {
  17. if bus != nil {
  18. return mL0.NewRes(bus)
  19. }
  20. resBus := kbus_base.GetKernelBusBase()
  21. if resBus.IsErr() {
  22. err := fmt.Errorf("GetKernelBusLocal(): in get kernel bus base, err=\n\t%w", resBus.Err())
  23. return mL0.NewErr[*kernelBusLocal](err)
  24. }
  25. bus = &kernelBusLocal{
  26. KBusBase: resBus.Val(),
  27. }
  28. return mL0.NewRes(bus)
  29. }