log_topic.go 1.1 KB

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