sectionmode.go 1.3 KB

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