| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- // package serv_public -- сервер запросов на публикацию
- package serv_public
- import (
- "context"
- "fmt"
- "log"
- "p78git.ddns.net/svi/gobus/api/netapi"
- "p78git.ddns.net/svi/gobus/pkg/alias"
- "p78git.ddns.net/svi/gobus/pkg/types"
- )
- // ServPublic -- отвечает на запросы публикации
- type ServPublic struct {
- serv types.IService
- dictTopic types.IDictTopic
- }
- // NewServPublic -- возвращает новый публикатор
- func NewServPublic(serv types.IService) (*ServPublic, error) {
- log.Printf("NewServPublic()\n")
- if serv == nil {
- return nil, fmt.Errorf("NewServPublic(): IService==nil")
- }
- sf := &ServPublic{
- serv: serv,
- dictTopic: serv.DictTopic(),
- }
- return sf, nil
- }
- // Public -- публикация сообщения в топик
- func (sf *ServPublic) Public(ctx context.Context, req *netapi.PublicRequest) (*netapi.DefaultResponse, error) {
- topic := sf.dictTopic.Get(alias.TopicName(req.Topic))
- if topic == nil {
- sf.dictTopic.Add(alias.TopicName(req.Topic))
- topic = sf.dictTopic.Get(alias.TopicName(req.Topic))
- }
- msg := &netapi.TopicMsg{
- Source: req.Source,
- Topic: req.Topic,
- Msg: req.Msg,
- }
- topic.Set(msg)
- return &netapi.DefaultResponse{}, nil
- }
|