stat_param.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. // package stat_param -- отдельный параметр статистики
  2. package stat_param
  3. import (
  4. "fmt"
  5. "sync"
  6. . "wartank/app/lev0/types"
  7. "wartank/kernel"
  8. )
  9. // СтатПарам -- потокобезопасная статистика
  10. type СтатПарам struct {
  11. имя string // Имя параметра
  12. знач int // Значение параметра
  13. блок sync.RWMutex
  14. }
  15. // НовБотСтатистика -- возвращает новую статистику
  16. func НовСтатПарам(имя string) *СтатПарам {
  17. лог := kernel.НовЛог("СтатПарам")
  18. лог.Инфо("НовСтатПарам(%s)\n", имя)
  19. лог.Паника(имя == "", "НовСтатПарам(): имя параметра пустое\n")
  20. сам := &СтатПарам{
  21. имя: имя,
  22. }
  23. _ = ИСтатПарам(сам)
  24. return сам
  25. }
  26. // ЗначСтр -- строковое представление значение параметра
  27. func (сам *СтатПарам) ЗначСтр() string {
  28. сам.блок.RLock()
  29. defer сам.блок.RUnlock()
  30. return fmt.Sprint(сам.знач)
  31. }
  32. // Уст -- устанавливает значение параметра
  33. func (сам *СтатПарам) Уст(val int) {
  34. сам.блок.Lock()
  35. defer сам.блок.Unlock()
  36. сам.знач = val
  37. }
  38. // Получ -- значение хранимого параметра
  39. func (сам *СтатПарам) Получ() int {
  40. сам.блок.RLock()
  41. defer сам.блок.RUnlock()
  42. return сам.знач
  43. }
  44. // Имя -- возвращает имя хранимого параметра
  45. func (сам *СтатПарам) Имя() string {
  46. сам.блок.RLock()
  47. defer сам.блок.RUnlock()
  48. return сам.имя
  49. }