section_mode.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. // package section_mode -- типовой режим секция работы части игры
  2. //
  3. // Имеет имя режима и имя текущей работы в режиме
  4. package section_mode
  5. import (
  6. "sync"
  7. )
  8. // SectionMode -- режим работы секции
  9. type SectionMode struct {
  10. name string // Имя режима
  11. work string // Имя работы
  12. block sync.RWMutex
  13. }
  14. // NewSectionMode -- возвращает новый *SectionMode
  15. func NewSectionMode() *SectionMode {
  16. return &SectionMode{
  17. name: "start",
  18. }
  19. }
  20. // Set -- устанавливает режим работы
  21. func (sf *SectionMode) Set(val string) {
  22. sf.block.Lock()
  23. defer sf.block.Unlock()
  24. sf.name = val
  25. }
  26. // Get -- возвращает хранимый режим работы
  27. func (sf *SectionMode) Get() string {
  28. sf.block.RLock()
  29. defer sf.block.RUnlock()
  30. return sf.name
  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. }