| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- package static_param
- import (
- "fmt"
- "sync"
- )
- /*
- Исходник предоставляет единичный статичный параметр статистики
- танка. Проверяет присваиваемые значения.
- Потокобезопасно.
- */
- // StaticParam -- потокобезопасный параметр танка
- type StaticParam struct {
- name string
- val int
- block sync.RWMutex
- }
- // NewStaticParam -- возвращает новый *StaticParam
- func NewStaticParam(name string) *StaticParam {
- if name == "" {
- panic(fmt.Errorf("NewStaticParam(): name is empty"))
- }
- sf := &StaticParam{
- name: name,
- }
- return sf
- }
- // Set -- устанавливает параметр
- func (sf *StaticParam) Set(val int) {
- sf.block.Lock()
- defer sf.block.Unlock()
- sf.val = val
- }
- // Get -- возвращает значение хранимого параметра
- func (sf *StaticParam) Get() int {
- sf.block.RLock()
- defer sf.block.RUnlock()
- return sf.val
- }
- // Name -- возвращает имя хранимого параметра
- func (sf *StaticParam) Name() string {
- sf.block.RLock()
- defer sf.block.RUnlock()
- return sf.name
- }
- // SetName -- устанавливает имя параметра
- func (sf *StaticParam) SetName(name string) {
- sf.block.Lock()
- defer sf.block.Unlock()
- sf.name = name
- }
|