ikernel_bus.go 1.6 KB

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