static_param.go 1.7 KB

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