package bus_spec import ( "gitp78su.ipnodns.ru/svi/kern/v4/lev0/core_spec" "gitp78su.ipnodns.ru/svi/kern/v4/lev2/lti/bus_ent" ) // IDictSubHook -- словарь обработчиков по единственному топику. type IDictSubHook interface { // Subscribe -- подписывает обработчик Subscribe(IBusHandlerSubscribe) // Read -- все локальные обработчики читают сообщение по его приходу Read(binMsg []byte) // Unsubscribe -- отписывает обработчик Unsubscribe(IBusHandlerSubscribe) } // IDictTopicSub -- интерфейс к словарю обработчиков подписки на словарь топиков. // // При подписке потребителей топика может быть НЕСКОЛЬКО на КАЖДЫЙ топик. type IDictTopicSub interface { // Subscribe -- подписывает подписчиков на любой из топиков Subscribe(IBusHandlerSubscribe) // Read -- читает сообщение для всех обработчиков подписки по приходу на любой из топиков Read(topic bus_ent.ITopicFix, binMsg []byte) // Unsubscribe -- отписывает подписчиков от любого из топиков Unsubscribe(IBusHandlerSubscribe) } // IDictTopicServe -- интерфейс к обработчику входящих запросов на словарь топиков. // // При обслуживании входящих запросов обработчик может быть только ОДИН на КАЖДЫЙ топик. // Но обработчик вызывается конкурентно. type IDictTopicServe interface { // Register -- регистрирует единственный обработчик на единственный топик Register(IBusHandlerServe) core_spec.IResult[core_spec.EBool] // SendRequest -- выполняет запрос по указанному топику SendRequest(topic bus_ent.ITopicFix, binReq []byte) core_spec.IResult[[]byte] // Unregister -- удаляет единственный обработчик с единственного топика Unregister(IBusHandlerServe) }