# IKernelBus

Шина ядра.

Может иметь несколько реализаций. Из фреймворка предлагается две реализации :

* локальная
* поверх HTTP

## Интерфейс

```go
// IKernelBus -- шина сообщений ядра
//
// Публикация и запрос требуют параметров на _передачу_.
// Подписка и обслуживание входящих запросов требует _обработчиков_.
type IKernelBus interface {
    // Publish -- публикует сообщение в шину
    Publish(topic ATopic, binMsg []byte) Result[bool]
    // SendRequest -- выполняет запрос по указанному топику
    SendRequest(topic ATopic, binReq []byte) Result[[]byte]

    // Subscribe -- подписывает обработчик на топик
    Subscribe(IBusHandlerSubscribe) Result[bool]
    // Unsubscribe -- отписывается от топика
    Unsubscribe(IBusHandlerSubscribe)
    // RegisterServe -- Регистрирует обработчик на обслуживание входящих запросов
    RegisterServe(IBusHandlerServe)

    // IsWork -- возвращает признак работы шины
    IsWork() bool
    // Log -- возвращает буферный лог
    Log() ILogBuf
}
```
