package tree import ( "time" "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/pool" ) // Statistic is metrics of the tree pool. type Statistic struct { methods []pool.StatusSnapshot } func (s *Statistic) Requests() (requests uint64) { for _, val := range s.methods { requests += val.AllRequests() } return requests } func (s *Statistic) AverageGetNodes() time.Duration { return s.averageTime(methodGetNodes) } func (s *Statistic) AverageGetSubTree() time.Duration { return s.averageTime(methodGetSubTree) } func (s *Statistic) AverageAddNode() time.Duration { return s.averageTime(methodAddNode) } func (s *Statistic) AverageAddNodeByPath() time.Duration { return s.averageTime(methodAddNodeByPath) } func (s *Statistic) AverageMoveNode() time.Duration { return s.averageTime(methodMoveNode) } func (s *Statistic) AverageRemoveNode() time.Duration { return s.averageTime(methodRemoveNode) } func (s *Statistic) averageTime(method MethodIndex) time.Duration { stat := s.methods[method] if stat.AllRequests() == 0 { return 0 } return time.Duration(stat.AllTime() / stat.AllRequests()) }