health_time.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package health_time
  2. import (
  3. "sync"
  4. )
  5. /*
  6. Содержит временное здоровье
  7. */
  8. // HealthTime -- временное здоровье
  9. type HealthTime struct {
  10. val int // Здоровье FIXME: переделать в алиас
  11. block sync.RWMutex
  12. }
  13. // NewHealthTime -- возвращает новый *HealthTime
  14. func NewHealthTime() *HealthTime {
  15. return &HealthTime{}
  16. }
  17. // Get -- возвращает хранимое временное здоровье
  18. func (сам *HealthTime) Get() int {
  19. сам.block.RLock()
  20. defer сам.block.RUnlock()
  21. return сам.val
  22. }
  23. // IsZero -- возвращает истину, если значение обнулено
  24. func (сам *HealthTime) IsZero() bool {
  25. сам.block.RLock()
  26. defer сам.block.RUnlock()
  27. return сам.val == 0
  28. }
  29. // Set -- устанавливает значение по требованию
  30. func (сам *HealthTime) Set(val int) {
  31. сам.block.Lock()
  32. defer сам.block.Unlock()
  33. if val < 0 {
  34. // log._rintf("WARN HealthTime.Set(): отрицательное значение(%v)\n", val)
  35. сам.val = 0
  36. return
  37. }
  38. сам.val = val
  39. }