static_param.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package static_param
  2. import (
  3. "fmt"
  4. "sync"
  5. )
  6. /*
  7. Исходник предоставляет единичный статичный параметр статистики
  8. танка. Проверяет присваиваемые значения.
  9. Потокобезопасно.
  10. */
  11. // StaticParam -- потокобезопасный параметр танка
  12. type StaticParam struct {
  13. name string
  14. val int
  15. block sync.RWMutex
  16. }
  17. // NewStaticParam -- возвращает новый *StaticParam
  18. func NewStaticParam(name string) *StaticParam {
  19. if name == "" {
  20. panic(fmt.Errorf("NewStaticParam(): name is empty"))
  21. }
  22. sf := &StaticParam{
  23. name: name,
  24. }
  25. return sf
  26. }
  27. // Set -- устанавливает параметр
  28. func (sf *StaticParam) Set(val int) {
  29. sf.block.Lock()
  30. defer sf.block.Unlock()
  31. sf.val = val
  32. }
  33. // Get -- возвращает значение хранимого параметра
  34. func (sf *StaticParam) Get() int {
  35. sf.block.RLock()
  36. defer sf.block.RUnlock()
  37. return sf.val
  38. }
  39. // Name -- возвращает имя хранимого параметра
  40. func (sf *StaticParam) Name() string {
  41. sf.block.RLock()
  42. defer sf.block.RUnlock()
  43. return sf.name
  44. }
  45. // SetName -- устанавливает имя параметра
  46. func (sf *StaticParam) SetName(name string) {
  47. sf.block.Lock()
  48. defer sf.block.Unlock()
  49. sf.name = name
  50. }