#include <folly/futures/HeapTimekeeper.h>
#include <optional>
#include <utility>
#include <vector>
#include <folly/Portability.h>
#include <folly/container/IntrusiveHeap.h>
#include <folly/lang/SafeAssert.h>
#include <folly/synchronization/DistributedMutex.h>
#include <folly/synchronization/RelaxedAtomic.h>
#include <folly/synchronization/SaturatingSemaphore.h>
#include <folly/synchronization/WaitOptions.h>
#include <folly/system/ThreadName.h>
namespace folly {
class HeapTimekeeper::Timeout : public IntrusiveHeapNode<> { … };
class HeapTimekeeper::State { … };
std::pair<HeapTimekeeper::Timeout::Ref, SemiFuture<Unit>>
HeapTimekeeper::Timeout::create(
HeapTimekeeper& parent, Clock::time_point expiration) { … }
HeapTimekeeper::Timeout::Timeout(
HeapTimekeeper& parent, Clock::time_point exp, Promise<Unit> promise)
: … { … }
void HeapTimekeeper::Timeout::interruptHandler(
Ref self, std::shared_ptr<State> state, exception_wrapper ew) { … }
bool HeapTimekeeper::Timeout::tryFulfill(Try<Unit> t) { … }
void HeapTimekeeper::Timeout::decRef() { … }
void HeapTimekeeper::State::clearAndAdjustCapacity(
std::vector<Op>& queue) { … }
void HeapTimekeeper::State::enqueue(Op::Type type, Timeout::Ref&& timeout) { … }
void HeapTimekeeper::State::shutdown() { … }
void HeapTimekeeper::State::worker() { … }
HeapTimekeeper::HeapTimekeeper() : … { … }
HeapTimekeeper::~HeapTimekeeper() { … }
SemiFuture<Unit> HeapTimekeeper::after(HighResDuration dur) { … }
}