#pragma once
namespace folly {
namespace detail {
template <typename DigestT, typename ClockT>
BufferedStat<DigestT, ClockT>::BufferedStat(
typename ClockT::duration bufferDuration,
size_t bufferSize,
size_t digestSize)
: … { … }
template <typename DigestT, typename ClockT>
void BufferedStat<DigestT, ClockT>::append(double value, TimePoint now) { … }
template <typename DigestT, typename ClockT>
typename BufferedStat<DigestT, ClockT>::TimePoint
BufferedStat<DigestT, ClockT>::roundUp(TimePoint t) { … }
template <typename DigestT, typename ClockT>
std::unique_lock<SharedMutex> BufferedStat<DigestT, ClockT>::updateIfExpired(
TimePoint now) { … }
template <typename DigestT, typename ClockT>
void BufferedStat<DigestT, ClockT>::flush() { … }
template <typename DigestT, typename ClockT>
void BufferedStat<DigestT, ClockT>::doUpdate(
TimePoint now,
const std::unique_lock<SharedMutex>& g,
UpdateMode updateMode) { … }
template <typename DigestT, typename ClockT>
BufferedDigest<DigestT, ClockT>::BufferedDigest(
typename ClockT::duration bufferDuration,
size_t bufferSize,
size_t digestSize)
: … { … }
template <typename DigestT, typename ClockT>
DigestT BufferedDigest<DigestT, ClockT>::get(TimePoint now) { … }
template <typename DigestT, typename ClockT>
void BufferedDigest<DigestT, ClockT>::onNewDigest(
DigestT digest,
TimePoint ,
TimePoint ,
const std::unique_lock<SharedMutex>& ) { … }
template <typename DigestT, typename ClockT>
BufferedSlidingWindow<DigestT, ClockT>::BufferedSlidingWindow(
size_t nBuckets,
typename ClockT::duration bufferDuration,
size_t bufferSize,
size_t digestSize)
: … { … }
template <typename DigestT, typename ClockT>
std::vector<DigestT> BufferedSlidingWindow<DigestT, ClockT>::get(
TimePoint now) { … }
template <typename DigestT, typename ClockT>
void BufferedSlidingWindow<DigestT, ClockT>::onNewDigest(
DigestT digest,
TimePoint newExpiry,
TimePoint oldExpiry,
const std::unique_lock<SharedMutex>& ) { … }
}
}