topic.go 1.2 KB

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