static_param.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package static_param
  2. import (
  3. "fmt"
  4. "sync"
  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) (*СтатПарам, error) {
  20. if имя == "" {
  21. return nil, fmt.Errorf("НовСтатПарам(): name is empty")
  22. }
  23. сам := &СтатПарам{
  24. имя: имя,
  25. }
  26. _ = types.ИСтатПарам(сам)
  27. return сам, nil
  28. }
  29. // Уст -- устанавливает значение параметра
  30. func (sf *СтатПарам) Уст(val int) {
  31. sf.блок.Lock()
  32. defer sf.блок.Unlock()
  33. sf.знач = val
  34. }
  35. // Получ -- значение хранимого параметра
  36. func (sf *СтатПарам) Получ() int {
  37. sf.блок.RLock()
  38. defer sf.блок.RUnlock()
  39. return sf.знач
  40. }
  41. // Имя -- возвращает имя хранимого параметра
  42. func (sf *СтатПарам) Имя() string {
  43. sf.блок.RLock()
  44. defer sf.блок.RUnlock()
  45. return sf.имя
  46. }