| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- // package handler_http_sub -- обработчик подписки по HTTP.
- package mock_hand_sub_http
- import (
- "crypto/rand"
- "log"
- "sync"
- mKh "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
- mKa "gitp78su.ipnodns.ru/svi/kern/v4/lev0/kalias"
- mKt "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
- )
- // MockHandSubHttp -- обработчик подписки по HTTP.
- type MockHandSubHttp struct {
- Name_ mKa.AHandlerName // Уникальное имя обработчика
- Topic_ mKa.ATopic // Имя топика, на который подписан обработчик
- WebHook_ string // Куда обращаться при запросах
- BinMsg_ []byte // Последнее бинарное сообщение
- block sync.RWMutex
- }
- // NewMockHandSubHttp -- возвращает новый обработчик подписки по HTTP.
- func NewMockHandSubHttp(topic mKa.ATopic, webHook string) mKt.IBusHandlerSubscribe {
- mKh.Hassert(topic != "", "NewHandlerHttpSub(): topic is empty")
- mKh.Hassert(webHook != "", "NewHandlerHttpSub(): webHook is empty")
- sf := &MockHandSubHttp{
- Topic_: topic,
- Name_: mKa.AHandlerName(webHook + "_" + rand.Text()),
- WebHook_: webHook,
- }
- return sf
- }
- // Topic -- возвращает имя топика, на который подписан обработчик.
- func (sf *MockHandSubHttp) Topic() mKa.ATopic {
- return sf.Topic_
- }
- // SetName -- устанавливает имя обработчика.
- func (sf *MockHandSubHttp) SetName(name mKa.AHandlerName) {
- sf.block.Lock()
- defer sf.block.Unlock()
- mKh.Hassert(name != "", "HandlerHttpSub.SetName(): name is empty")
- sf.Name_ = name
- }
- // Name -- возвращает уникальное имя обработчика.
- func (sf *MockHandSubHttp) Name() mKa.AHandlerName {
- 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_)
- }
|