| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- package ktypes
- import (
- . "gitp78su.ipnodns.ru/svi/kern/v2/krn/kalias"
- )
- // IBusBaseHandler -- базовый обработчик обратного вызова
- type IBusBaseHandler interface {
- // Topic -- топик подписки обработчика
- Topic() ATopic
- // Name -- уникальное имя обработчика
- Name() AHandlerName
- }
- // IBusHandlerSubscribe -- объект обработчика подписки
- type IBusHandlerSubscribe interface {
- IBusBaseHandler
- // FnBack -- функция обратного вызова
- FnBack([]byte)
- }
- // IBusHandlerServe -- обработчик входящих запросов
- type IBusHandlerServe interface {
- IBusBaseHandler
- // FnBack -- функция обратного вызова
- FnBack(binReq []byte) Result[[]byte]
- }
- // IDictSubHook -- словарь обработчиков по единственному топик
- type IDictSubHook interface {
- // Subscribe -- подписывает обработчик
- Subscribe(IBusHandlerSubscribe)
- // Read -- все локальные обработчики читают сообщение по его приходу
- Read(binMsg []byte)
- // Unsubscribe -- отписывает обработчик
- Unsubscribe(IBusHandlerSubscribe)
- }
- // IDictTopicSub -- интерфейс к словарю обработчиков подписки на словарь топиков
- //
- // При подписке потребителей топика может быть НЕСКОЛЬКО на КАЖДЫЙ топик
- type IDictTopicSub interface {
- // Subscribe -- подписывает подписчиков на любой из топиков
- Subscribe(IBusHandlerSubscribe)
- // Read -- читает сообщение для всех обработчиков подписки по приходу на любой из топиков
- Read(topic ATopic, binMsg []byte)
- // Unsubscribe -- отписывает подписчиков от любого из топиков
- Unsubscribe(IBusHandlerSubscribe)
- }
- // IDictTopicServe -- интерфейс к обработчику входящих запросов на словарь топиков
- //
- // При обслуживании входящих запросов обработчик может быть только ОДИН на КАЖДЫЙ топик.
- // Но обработчик вызывается конкурентно.
- type IDictTopicServe interface {
- // Register -- регистрирует единственный обработчик на единственный топик
- Register(IBusHandlerServe)
- // SendRequest -- выполняет запрос по указанному топику
- SendRequest(topic ATopic, binReq []byte) Result[[]byte]
- // Unregister -- удаляет единственный обработчик с единственного топика
- Unregister(IBusHandlerServe)
- }
- // 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
- }
- // IBusClient -- интерфейс клиента к шину
- type IBusClient interface {
- IKernelBus
- }
|