package healthtime

import (
	"sync"
)

/*
	Содержит временное здоровье
*/

// HealthTime -- временное здоровье
type HealthTime struct {
	val   int // Здоровье FIXME: переделать в алиас
	block sync.RWMutex
}

// NewHealthTime -- возвращает новый *HealthTime
func NewHealthTime() *HealthTime {
	return &HealthTime{}
}

// Get -- возвращает хранимое временное здоровье
func (sf *HealthTime) Get() int {
	sf.block.RLock()
	defer sf.block.RUnlock()
	return sf.val
}

// IsZero -- возвращает истину, если значение обнулено
func (sf *HealthTime) IsZero() bool {
	sf.block.RLock()
	defer sf.block.RUnlock()
	return sf.val == 0
}

// Set -- устанавливает значение по требованию
func (sf *HealthTime) Set(val int) {
	sf.block.Lock()
	defer sf.block.Unlock()
	if val < 0 {
		// log._rintf("WARN HealthTime.Set(): отрицательное значение(%v)\n", val)
		sf.val = 0
		return
	}
	sf.val = val
}
