package sectionmode

import (
	"sync"
)

/*
	Режим работы секции
*/

// SectionMode -- режим работы секции
type SectionMode struct {
	val   string // Имя режима
	work  string // Имя работы
	block sync.RWMutex
}

// NewSectionMode -- возвращает новый *SectionMode
func NewSectionMode() *SectionMode {
	return &SectionMode{
		val: "start",
	}
}

// Set -- устанавливает режим работы
func (sf *SectionMode) Set(val string) {
	sf.block.Lock()
	defer sf.block.Unlock()
	sf.val = val
}

// Get -- возвращает хранимый режим работы
func (sf *SectionMode) Get() string {
	sf.block.RLock()
	defer sf.block.RUnlock()
	return sf.val
}

// Work -- возвращает хранимое имя работы
func (sf *SectionMode) Work() string {
	sf.block.RLock()
	defer sf.block.RUnlock()
	return sf.work
}

// WorkSet -- устанавливает хранимое имя работы
func (sf *SectionMode) WorkSet(work string) {
	sf.block.Lock()
	defer sf.block.Unlock()
	sf.work = work
}
