log_topic.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. // package log_topic -- элемент лога шины топика
  2. package log_topic
  3. import (
  4. "fmt"
  5. . "gitp78su.ipnodns.ru/svi/kern/v4/lev0/kalias"
  6. . "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
  7. . "gitp78su.ipnodns.ru/svi/kern/v4/lev1/helpers"
  8. . "gitp78su.ipnodns.ru/svi/kern/v4/lev1/result"
  9. )
  10. // LogTopic -- элемент лога шины
  11. type LogTopic struct {
  12. topic ATopic // Топик, куда публиковать лог
  13. client IBusClient // С помощью чего публиковать лог
  14. }
  15. // NewLogTopic -- возвращает новый элемент лога
  16. func NewLogTopic(topic ATopic, client IBusClient) *LogTopic {
  17. Hassert(topic != "", "NewLogTopic(): topic is empty")
  18. Hassert(client != nil, "NewLogTopic(): IBusClient==nil")
  19. sf := &LogTopic{
  20. topic: topic,
  21. client: client,
  22. }
  23. return sf
  24. }
  25. // Pub -- публикует сообщение в топик
  26. func (sf *LogTopic) Pub(binMsg []byte) IResult[bool] {
  27. res := sf.client.Publish(sf.topic, binMsg)
  28. if res.IsErr() {
  29. err := fmt.Errorf("LogTopic.Pub(): in pub with client, err=\n\t%v", res.Err())
  30. return NewErr[bool](err)
  31. }
  32. return res
  33. }