31 template <
typename DigestT,
typename ClockT>
39 typename ClockT::duration bufferDuration,
69 const std::unique_lock<SharedMutex>&
g) = 0;
75 std::unique_lock<SharedMutex>
update();
90 const std::unique_lock<SharedMutex>&
g,
99 template <
typename DigestT,
typename ClockT>
105 typename ClockT::duration bufferDuration,
115 const std::unique_lock<SharedMutex>&
g)
final;
125 template <
typename DigestT,
typename ClockT>
132 typename ClockT::duration bufferDuration,
142 const std::unique_lock<SharedMutex>&
g)
final;
void append(double value, TimePoint now=ClockT::now())
std::unique_lock< SharedMutex > update()
std::chrono::steady_clock::time_point now()
std::unique_lock< SharedMutex > updateIfExpired(TimePoint now)
const ClockT::duration bufferDuration_
virtual void onNewDigest(DigestT digest, TimePoint newExpiry, TimePoint oldExpiry, const std::unique_lock< SharedMutex > &g)=0
—— Concurrent Priority Queue Implementation ——
requires E e noexcept(noexcept(s.error(std::move(e))))
std::atomic< TimePointHolder > expiry_
TimePointHolder() noexcept
SlidingWindow< DigestT > slidingWindow_
void doUpdate(TimePoint now, const std::unique_lock< SharedMutex > &g, UpdateMode updateMode)
uint64_t value(const typename LockFreeRingBuffer< T, Atom >::Cursor &rbcursor)
DigestBuilder< DigestT > digestBuilder_
TimePointHolder(TimePoint t)
TimePoint roundUp(TimePoint t)
typename ClockT::time_point TimePoint