| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- // package serv_subscribe_buffer -- сервер подписки с буфером хранения
- package serv_subscribe_buffer
- import (
- "fmt"
- "p78git.ddns.net/svi/gobus/pkg/net/client_proxy_buffer"
- "p78git.ddns.net/svi/gobus/pkg/net/netapi"
- "p78git.ddns.net/svi/gobus/pkg/types"
- )
- // ServSubscribeBuffer -- буферизованная подписка (на случай временного отключения клиента)
- type ServSubscribeBuffer struct {
- serv types.IService
- dictTopic types.IDictTopic
- dictProxyBuffer types.IDictClientProxyBuffer
- }
- // 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(),
- dictProxyBuffer: serv.DictClientProxyBuffer(),
- }
- return sf, nil
- }
- // SubscribeBuffer -- обслуживает буферизованные попдиски
- func (sf *ServSubscribeBuffer) SubscribeBuffer(req *netapi.BuffRequest, serv netapi.GoBus_SubscribeBufferServer) error {
- clientProxy, err := client_proxy_buffer.NewClientProxyBuffer(req)
- if err != nil {
- return fmt.Errorf("ServSubscribe.Subscribe(): in create ClientProxy, err=\n\t%w", err)
- }
- sf.dictTopic.Subscribe(clientProxy)
- return nil
- }
|