topic.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package topic
  2. import (
  3. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
  4. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
  5. )
  6. // ATopic -- имя топика в шине.
  7. type ATopic defs.ATxt
  8. // ITopicFix -- неизменяемое имя топика в шине.
  9. type ITopicFix interface {
  10. defs.IString
  11. // Get -- возвращает имя топика
  12. Get() ATopic
  13. }
  14. // ITopicMut -- изменяемое имя топика в шине.
  15. type ITopicMut interface {
  16. ITopicFix
  17. // Set -- устанавливает имя топика
  18. Set(val ATopic)
  19. }
  20. // Topic -- имя топика в шине.
  21. type Topic struct {
  22. val ATopic
  23. }
  24. // NewTopic -- создает новый топик.
  25. func NewTopic(val ATopic) *Topic {
  26. helpers.Hassert(val != "", "NewTopic(): val is empty")
  27. sf := &Topic{
  28. val: val,
  29. }
  30. _ = ITopicMut(sf)
  31. return sf
  32. }
  33. // String -- строковое представление топика.
  34. func (sf *Topic) String() string {
  35. return defs.TxtFix(sf.val).String()
  36. }
  37. // Get -- получить строковое представление топика.
  38. func (sf *Topic) Get() ATopic {
  39. return sf.val
  40. }
  41. // Set -- установить строковое представление топика.
  42. func (sf *Topic) Set(val ATopic) {
  43. helpers.Hassert(val != "", "Topic.Set(): val is empty")
  44. sf.val = val
  45. }