sectionmode.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package sectionmode
  2. import (
  3. "sync"
  4. )
  5. /*
  6. Режим работы секции
  7. */
  8. // SectionMode -- режим работы секции
  9. type SectionMode struct {
  10. val string // Имя режима
  11. work string // Имя работы
  12. block sync.RWMutex
  13. }
  14. // NewSectionMode -- возвращает новый *SectionMode
  15. func NewSectionMode() *SectionMode {
  16. return &SectionMode{
  17. val: "start",
  18. }
  19. }
  20. // Set -- устанавливает режим работы
  21. func (sf *SectionMode) Set(val string) {
  22. sf.block.Lock()
  23. defer sf.block.Unlock()
  24. sf.val = val
  25. }
  26. // Get -- возвращает хранимый режим работы
  27. func (sf *SectionMode) Get() string {
  28. sf.block.RLock()
  29. defer sf.block.RUnlock()
  30. return sf.val
  31. }
  32. // Work -- возвращает хранимое имя работы
  33. func (sf *SectionMode) Work() string {
  34. sf.block.RLock()
  35. defer sf.block.RUnlock()
  36. return sf.work
  37. }
  38. // WorkSet -- устанавливает хранимое имя работы
  39. func (sf *SectionMode) WorkSet(work string) {
  40. sf.block.Lock()
  41. defer sf.block.Unlock()
  42. sf.work = work
  43. }