stat_param.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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. return сам
  24. }
  25. // ЗначСтр -- строковое представление значение параметра
  26. func (сам *статПарам) ЗначСтр() string {
  27. сам.блок.RLock()
  28. defer сам.блок.RUnlock()
  29. return fmt.Sprint(сам.знач)
  30. }
  31. // Уст -- устанавливает значение параметра
  32. func (сам *статПарам) Уст(val int) {
  33. сам.блок.Lock()
  34. defer сам.блок.Unlock()
  35. сам.знач = val
  36. }
  37. // Получ -- значение хранимого параметра
  38. func (сам *статПарам) Получ() int {
  39. сам.блок.RLock()
  40. defer сам.блок.RUnlock()
  41. return сам.знач
  42. }
  43. // Имя -- возвращает имя хранимого параметра
  44. func (сам *статПарам) Имя() string {
  45. сам.блок.RLock()
  46. defer сам.блок.RUnlock()
  47. return сам.имя
  48. }