package ismanevr

import (
	"sync"
)

/*
	Потокобезопасный признак внешнего разрешения манёвра
*/

// IsManevr -- потокобезопасный признак внешнего разрешения манёвра
type IsManevr struct {
	val   bool
	block sync.RWMutex
}

// NewIsManevr -- возвращает новый *IsManevr
func NewIsManevr() *IsManevr {
	return &IsManevr{
		val: true,
	}
}

// Get -- возвращает хранимое состояние
func (сам *IsManevr) Get() bool {
	сам.block.RLock()
	defer сам.block.RUnlock()
	return сам.val
}

// Set -- устанавливает хранимое состояние
func (сам *IsManevr) Set() {
	сам.block.Lock()
	defer сам.block.Unlock()
	сам.val = true
}

// Reset -- сбрасывает хранимое состояние
func (сам *IsManevr) Reset() {
	сам.block.Lock()
	defer сам.block.Unlock()
	сам.val = false
}
