ikernel_bus.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. // package bus_spec -- спецификации для работы с шиной
  2. package bus_spec
  3. import (
  4. "gitp78su.ipnodns.ru/svi/kern/v4/lev0"
  5. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/core_spec"
  6. "gitp78su.ipnodns.ru/svi/kern/v4/lev1/log_buf"
  7. "gitp78su.ipnodns.ru/svi/kern/v4/lev2/lti/bus_ent"
  8. )
  9. // IKernelBus -- шина сообщений ядра.
  10. //
  11. // Публикация и запрос требуют параметров на _передачу_.
  12. // Подписка и обслуживание входящих запросов требует _обработчиков_.
  13. type IKernelBus interface {
  14. // Publish -- публикует сообщение в шину
  15. Publish(topic bus_ent.ITopicFix, binMsg []byte) *lev0.Result[core_spec.EBool]
  16. // SendRequest -- выполняет запрос по указанному топику
  17. SendRequest(topic bus_ent.ITopicFix, binReq []byte) *lev0.Result[[]byte]
  18. // Subscribe -- подписывает обработчик на топик
  19. Subscribe(IBusHandlerSubscribe) *lev0.Result[core_spec.EBool]
  20. // Unsubscribe -- отписывается от топика
  21. Unsubscribe(IBusHandlerSubscribe)
  22. // RegisterServe -- Регистрирует обработчик на обслуживание входящих запросов
  23. RegisterServe(IBusHandlerServe) *lev0.Result[core_spec.EBool]
  24. // IsWork -- возвращает признак работы шины
  25. IsWork() core_spec.EBool
  26. // Log -- возвращает буферный лог
  27. Log() log_buf.ILogBuf
  28. }
  29. // IBusClient -- интерфейс клиента к шину.
  30. type IBusClient interface {
  31. IKernelBus
  32. }