// 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 }