serv_public.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. // package serv_public -- сервер запросов на публикацию
  2. package serv_public
  3. import (
  4. "context"
  5. "fmt"
  6. "log"
  7. "p78git.ddns.net/svi/gobus/api/netapi"
  8. "p78git.ddns.net/svi/gobus/pkg/types"
  9. )
  10. // ServPublic -- отвечает на запросы публикации
  11. type ServPublic struct {
  12. serv types.IService
  13. dictTopic types.IDictTopic
  14. }
  15. // NewServPublic -- возвращает новый публикатор
  16. func NewServPublic(serv types.IService) (*ServPublic, error) {
  17. log.Printf("NewServPublic()\n")
  18. if serv == nil {
  19. return nil, fmt.Errorf("NewServPublic(): IService==nil")
  20. }
  21. sf := &ServPublic{
  22. serv: serv,
  23. dictTopic: serv.DictTopic(),
  24. }
  25. return sf, nil
  26. }
  27. // Public -- публикация сообщения в топик
  28. func (sf *ServPublic) Public(ctx context.Context, req *netapi.PublicRequest) (*netapi.DefaultResponse, error) {
  29. err := sf.dictTopic.Public(req.TopicMsg)
  30. if err != nil {
  31. return nil, fmt.Errorf("ServPublic.Public(): in set topic, err=\n\t%w", err)
  32. }
  33. return &netapi.DefaultResponse{}, nil
  34. }