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