in fb303/detail/QuantileStatMap-inl.h [38:77]
folly::Optional<int64_t> BasicQuantileStatMap<ClockT>::getValue(
folly::StringPiece key) const {
CounterMapEntry cme;
{
folly::SharedMutex::ReadHolder g(mutex_);
auto it = counterMap_.find(key);
if (it == counterMap_.end()) {
return folly::none;
}
cme = it->second;
}
folly::Range<const double*> r;
if (cme.statDef.type == ExportType::PERCENT) {
r = folly::Range<const double*>(&cme.statDef.quantile, 1);
}
auto estimates = cme.stat->getEstimates(r);
const folly::QuantileEstimates* qe = nullptr;
if (cme.slidingWindowLength) {
for (const auto& slidingWindow : estimates.slidingWindows) {
auto slidingWindowLength = slidingWindow.slidingWindowLength();
if (slidingWindowLength == cme.slidingWindowLength) {
qe = &slidingWindow.estimate;
break;
}
}
} else {
qe = &estimates.allTimeEstimate;
}
if (!qe) {
return folly::none;
}
return extractValue(
cme.statDef,
*qe,
statDuration<ClockT>(cme.slidingWindowLength, cme.stat->creationTime()));
}