topic.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package topic
  2. import (
  3. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
  4. )
  5. // ATopic -- имя топика в шине.
  6. type ATopic string
  7. // ITopicFix -- неизменяемое имя топика в шине.
  8. type ITopicFix interface {
  9. // Get -- возвращает имя топика
  10. Get() ATopic
  11. // String -- строковое представление топика
  12. String() string
  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. //
  35. func (sf *Topic) String() string {
  36. return string(sf.val)
  37. }
  38. // Get -- получить строковое представление топика.
  39. //
  40. func (sf *Topic) Get() ATopic {
  41. return sf.val
  42. }
  43. // Set -- установить строковое представление топика.
  44. //
  45. func (sf *Topic) Set(val ATopic) {
  46. helpers.Hassert(val != "", "Topic.Set(): val is empty")
  47. sf.val = val
  48. }