// It's not sufficient to use trace level logging, since it becomes far too noisy for a number of
// (https://en.wikipedia.org/wiki/Earliest_deadline_first_scheduling) used for weighted round robin.
// Each pick from the schedule has the earliest deadline entry selected. Entries have deadlines set
std::shared_ptr<C> pickAndAdd(std::function<double(const C&)> calculate_weight) override {
EDF_TRACE("Creating an EDF-scheduler with {} weights and {} pre-picks.", entries.size(), picks);
EDF_TRACE("Emulated {} picks in init step, {} picks remaining for one after the other step",
EDF_TRACE("Queue pick: queue_.size()={}, current_time_={}.", queue_.size(), current_time_);
EDF_TRACE("Picked {}, current_time_={}.", static_cast<const void*>(ret.get()), current_time_);
// We only hold a weak pointer, since we don't support a remove operator. This allows entries to
// Offset used during addition to break ties when entries have the same weight but should reflect