| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- // package handler_http_sub -- обработчик подписки по HTTP.
- package mock_hand_sub_http
- import (
- "crypto/rand"
- "log"
- "sync"
- mKd "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
- mKh "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
- mKs "gitp78su.ipnodns.ru/svi/kern/v4/lev0/kspec"
- )
- // MockHandSubHttp -- обработчик подписки по HTTP.
- type MockHandSubHttp struct {
- Name_ *mKd.HandlerName // Уникальное имя обработчика
- Topic_ *mKd.Topic // Имя топика, на который подписан обработчик
- WebHook_ string // Куда обращаться при запросах
- BinMsg_ []byte // Последнее бинарное сообщение
- block sync.RWMutex
- }
- // NewMockHandSubHttp -- возвращает новый обработчик подписки по HTTP.
- func NewMockHandSubHttp(topic *mKd.Topic, webHook string) mKs.IBusHandlerSubscribe {
- mKh.Hassert(topic.Get() != "", "NewHandlerHttpSub(): topic is empty")
- mKh.Hassert(webHook != "", "NewHandlerHttpSub(): webHook is empty")
- sf := &MockHandSubHttp{
- Topic_: topic,
- Name_: mKd.NewHandlerName(webHook + "_" + rand.Text()),
- WebHook_: webHook,
- }
- return sf
- }
- // Topic -- возвращает имя топика, на который подписан обработчик.
- func (sf *MockHandSubHttp) Topic() *mKd.Topic {
- return sf.Topic_
- }
- // SetName -- устанавливает имя обработчика.
- func (sf *MockHandSubHttp) SetName(name *mKd.HandlerName) {
- sf.block.Lock()
- defer sf.block.Unlock()
- mKh.Hassert(name != nil, "HandlerHttpSub.SetName(): name is empty")
- sf.Name_ = name
- }
- // Name -- возвращает уникальное имя обработчика.
- func (sf *MockHandSubHttp) Name() *mKd.HandlerName {
- sf.block.RLock()
- defer sf.block.RUnlock()
- return sf.Name_
- }
- // FnBack -- обратный вызов по приходу сообщения.
- func (sf *MockHandSubHttp) FnBack(binMsg []byte) {
- sf.block.Lock()
- defer sf.block.Unlock()
- log.Printf("HandlerHttpSub.FnBack(): msg=%v\n", string(binMsg))
- sf.BinMsg_ = binMsg
- }
- // Msg -- возвращает строковое представление хранимого сообщения.
- func (sf *MockHandSubHttp) Msg() string {
- sf.block.Lock()
- defer sf.block.Unlock()
- return string(sf.BinMsg_)
- }
|