topic.go 1.4 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. //go:fix inline
  36. func (sf *Topic) String() string {
  37. return string(sf.val)
  38. }
  39. // Get -- получить строковое представление топика.
  40. //
  41. //go:fix inline
  42. func (sf *Topic) Get() ATopic {
  43. return sf.val
  44. }
  45. // Set -- установить строковое представление топика.
  46. //
  47. //go:fix inline
  48. func (sf *Topic) Set(val ATopic) {
  49. helpers.Hassert(val != "", "Topic.Set(): val is empty")
  50. sf.val = val
  51. }