| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- package kspec
- import (
- mKa "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
- )
- // IBusBaseHandler -- базовый обработчик обратного вызова.
- type IBusBaseHandler interface {
- // Topic -- топик подписки обработчика
- Topic() *mKa.Topic
- // Name -- уникальное имя обработчика
- Name() *mKa.HandlerName
- }
- // IBusHandlerSubscribe -- объект обработчика подписки.
- type IBusHandlerSubscribe interface {
- IBusBaseHandler
- // FnBack -- функция обратного вызова
- FnBack([]byte)
- }
- // IBusHandlerServe -- обработчик входящих запросов.
- type IBusHandlerServe interface {
- IBusBaseHandler
- // FnBack -- функция обратного вызова
- FnBack(binReq []byte) IResult[[]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 *mKa.Topic, binMsg []byte)
- // Unsubscribe -- отписывает подписчиков от любого из топиков
- Unsubscribe(IBusHandlerSubscribe)
- }
- // IDictTopicServe -- интерфейс к обработчику входящих запросов на словарь топиков.
- //
- // При обслуживании входящих запросов обработчик может быть только ОДИН на КАЖДЫЙ топик.
- // Но обработчик вызывается конкурентно.
- type IDictTopicServe interface {
- // Register -- регистрирует единственный обработчик на единственный топик
- Register(IBusHandlerServe) IResult[bool]
- // SendRequest -- выполняет запрос по указанному топику
- SendRequest(topic *mKa.Topic, binReq []byte) IResult[[]byte]
- // Unregister -- удаляет единственный обработчик с единственного топика
- Unregister(IBusHandlerServe)
- }
- // IKernelBus -- шина сообщений ядра.
- //
- // Публикация и запрос требуют параметров на _передачу_.
- // Подписка и обслуживание входящих запросов требует _обработчиков_.
- type IKernelBus interface {
- // Publish -- публикует сообщение в шину
- Publish(topic *mKa.Topic, binMsg []byte) IResult[bool]
- // SendRequest -- выполняет запрос по указанному топику
- SendRequest(topic *mKa.Topic, binReq []byte) IResult[[]byte]
- // Subscribe -- подписывает обработчик на топик
- Subscribe(IBusHandlerSubscribe) IResult[bool]
- // Unsubscribe -- отписывается от топика
- Unsubscribe(IBusHandlerSubscribe)
- // RegisterServe -- Регистрирует обработчик на обслуживание входящих запросов
- RegisterServe(IBusHandlerServe) IResult[bool]
- // IsWork -- возвращает признак работы шины
- IsWork() bool
- // Log -- возвращает буферный лог
- Log() ILogBuf
- }
- // IBusClient -- интерфейс клиента к шину.
- type IBusClient interface {
- IKernelBus
- }
|