mock_hand_serve.go 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. // package mock_hand_serve -- мок-обработчик входящих запросов.
  2. package mock_hand_serve
  3. import (
  4. "fmt"
  5. "sync"
  6. mL0 "gitp78su.ipnodns.ru/svi/kern/v4/lev0"
  7. mKd "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
  8. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/handler_name"
  9. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/topic"
  10. mKh "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
  11. mKs "gitp78su.ipnodns.ru/svi/kern/v4/lev0/kspec"
  12. "gitp78su.ipnodns.ru/svi/kern/v4/lev1/safe_bool"
  13. )
  14. // MockHandlerServe -- мок-обработчик входящих запросов.
  15. type MockHandlerServe struct {
  16. IsBad_ mKs.ISafeBool // Признак сбоя при вызове
  17. Msg_ []byte // Для обратного вызова
  18. Name_ *handler_name.AHandlerName // Уникальное имя мок-обработчика подписки
  19. Topic_ *topic.ATopic // Имя топика подписки
  20. block sync.Mutex
  21. }
  22. // NewMockHandlerServe -- возвращает новый обработчик подписки.
  23. func NewMockHandlerServe(topic *topic.ATopic, name string) *MockHandlerServe {
  24. mKh.Hassert(topic.Get() != "", "NewMockHandlerServe(): topic is empty")
  25. mKh.Hassert(name != "", "NewMockHandlerServe(): name is empty")
  26. sf := &MockHandlerServe{
  27. Topic_: topic,
  28. Name_: mKd.NewHandlerName(name),
  29. IsBad_: safe_bool.NewSafeBool(false),
  30. }
  31. _ = mKs.IBusHandlerServe(sf)
  32. return sf
  33. }
  34. // Функция обратного вызова подписки.
  35. func (sf *MockHandlerServe) FnBack(binMsg []byte) mL0.IResult[[]byte] {
  36. sf.block.Lock()
  37. defer sf.block.Unlock()
  38. if sf.IsBad_.Get() {
  39. err := fmt.Errorf("FnBack(): isBad==true")
  40. return mL0.NewErr[[]byte](err)
  41. }
  42. sf.Msg_ = binMsg
  43. return mL0.NewOk(binMsg)
  44. }
  45. // Возвращает уникальное имя обработчика подписки.
  46. func (sf *MockHandlerServe) Topic() *topic.ATopic {
  47. return sf.Topic_
  48. }
  49. // Возвращает топик для обработчика подписки.
  50. func (sf *MockHandlerServe) Name() *handler_name.AHandlerName {
  51. return sf.Name_
  52. }