// package stat_param -- отдельный параметр статистики package stat_param import ( "fmt" "sync" . "wartank/app/lev0/types" "wartank/kernel" ) // СтатПарам -- потокобезопасная статистика type СтатПарам struct { имя string // Имя параметра знач int // Значение параметра блок sync.RWMutex } // НовБотСтатистика -- возвращает новую статистику func НовСтатПарам(имя string) *СтатПарам { лог := kernel.НовЛог("СтатПарам") лог.Инфо("НовСтатПарам(%s)\n", имя) лог.Паника(имя == "", "НовСтатПарам(): имя параметра пустое\n") сам := &СтатПарам{ имя: имя, } _ = ИСтатПарам(сам) return сам } // ЗначСтр -- строковое представление значение параметра func (сам *СтатПарам) ЗначСтр() string { сам.блок.RLock() defer сам.блок.RUnlock() return fmt.Sprint(сам.знач) } // Уст -- устанавливает значение параметра func (сам *СтатПарам) Уст(val int) { сам.блок.Lock() defer сам.блок.Unlock() сам.знач = val } // Получ -- значение хранимого параметра func (сам *СтатПарам) Получ() int { сам.блок.RLock() defer сам.блок.RUnlock() return сам.знач } // Имя -- возвращает имя хранимого параметра func (сам *СтатПарам) Имя() string { сам.блок.RLock() defer сам.блок.RUnlock() return сам.имя }