// package mock_hand_serve -- мок-обработчик входящих запросов. package mock_hand_serve import ( "fmt" "sync" mL0 "gitp78su.ipnodns.ru/svi/kern/v4/lev0" mKd "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs" "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/handler_name" "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/topic" mKh "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers" mKs "gitp78su.ipnodns.ru/svi/kern/v4/lev0/kspec" "gitp78su.ipnodns.ru/svi/kern/v4/lev1/safe_bool" ) // MockHandlerServe -- мок-обработчик входящих запросов. type MockHandlerServe struct { IsBad_ mKs.ISafeBool // Признак сбоя при вызове Msg_ []byte // Для обратного вызова Name_ *handler_name.AHandlerName // Уникальное имя мок-обработчика подписки Topic_ *topic.ATopic // Имя топика подписки block sync.Mutex } // NewMockHandlerServe -- возвращает новый обработчик подписки. func NewMockHandlerServe(topic *topic.ATopic, name string) *MockHandlerServe { mKh.Hassert(topic.Get() != "", "NewMockHandlerServe(): topic is empty") mKh.Hassert(name != "", "NewMockHandlerServe(): name is empty") sf := &MockHandlerServe{ Topic_: topic, Name_: mKd.NewHandlerName(name), IsBad_: safe_bool.NewSafeBool(false), } _ = mKs.IBusHandlerServe(sf) return sf } // Функция обратного вызова подписки. func (sf *MockHandlerServe) FnBack(binMsg []byte) mL0.IResult[[]byte] { sf.block.Lock() defer sf.block.Unlock() if sf.IsBad_.Get() { err := fmt.Errorf("FnBack(): isBad==true") return mL0.NewErr[[]byte](err) } sf.Msg_ = binMsg return mL0.NewOk(binMsg) } // Возвращает уникальное имя обработчика подписки. func (sf *MockHandlerServe) Topic() *topic.ATopic { return sf.Topic_ } // Возвращает топик для обработчика подписки. func (sf *MockHandlerServe) Name() *handler_name.AHandlerName { return sf.Name_ }