kbus_local.go 859 B

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