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 }