stat_param.go 1.7 KB

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