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