| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- // package serv_subscribe_buffer -- сервер подписки с буфером хранения
- package serv_subscribe_buffer
- import (
- "fmt"
- "p78git.ddns.net/svi/gobus/pkg/alias"
- "p78git.ddns.net/svi/gobus/pkg/net/netapi"
- "p78git.ddns.net/svi/gobus/pkg/net/cleint_proxy"
- "p78git.ddns.net/svi/gobus/pkg/types"
- )
- // ServSubscribeBuffer -- буферизованная подписка (на случай временного отключения клиента)
- type ServSubscribeBuffer struct {
- serv types.IService
- dictTopic types.IDictTopic
- }
- // NewServSubscribeBuffer -- возвращает новый сервер буферизованной подписки
- func NewServSubscribeBuffer(serv types.IService) (*ServSubscribeBuffer, error) {
- if serv == nil {
- return nil, fmt.Errorf("NewServSubscribeBuffer(): IService==nil")
- }
- sf := &ServSubscribeBuffer{
- serv: serv,
- dictTopic: serv.DictTopic(),
- }
- return sf, nil
- }
- // SubscribeBuffer -- обслуживает буферизованные попдиски
- func (sf *ServSubscribeBuffer) SubscribeBuffer(req *netapi.BuffRequest, serv netapi.GoBus_SubscribeBufferServer) error {
- clientProxy, err := cleint_proxy.NewClientProxy(alias.ClientName(req.ClientName), alias.TopicName(req.Sample))
- if err != nil {
- return fmt.Errorf("ServSubscribe.Subscribe(): in create ClientProxy, err=\n\t%w", err)
- }
- sf.dictTopic.Subscribe(clientProxy)
-
- return nil
- }
|