LCOV - code coverage report
Current view: top level - envoy/upstream - scheduler.h (source / functions) Hit Total Coverage
Test: coverage.dat Lines: 1 1 100.0 %
Date: 2024-01-05 06:35:25 Functions: 2 2 100.0 %

          Line data    Source code
       1             : #pragma once
       2             : 
       3             : #include <functional>
       4             : #include <memory>
       5             : 
       6             : namespace Envoy {
       7             : namespace Upstream {
       8             : 
       9             : /**
      10             :  * The base class for scheduler implementations used in various load balancers.
      11             :  */
      12             : template <class C> class Scheduler {
      13             : public:
      14         936 :   virtual ~Scheduler() = default;
      15             : 
      16             :   /**
      17             :    * Each time peekAgain is called, it will return the best-effort subsequent
      18             :    * pick, popping and reinserting the entry as if it had been picked.
      19             :    * The first time peekAgain is called, it will return the
      20             :    * first item which will be picked, the second time it is called it will
      21             :    * return the second item which will be picked. As picks occur, that window
      22             :    * will shrink.
      23             :    *
      24             :    * @param calculate_weight for implementations that choose to support it, this predicate specifies
      25             :    * the new weight of the entry.
      26             :    * @return std::shared_ptr<C> the best effort subsequent pick.
      27             :    */
      28             : 
      29             :   virtual std::shared_ptr<C> peekAgain(std::function<double(const C&)> calculate_weight) = 0;
      30             : 
      31             :   /**
      32             :    * Pick a queue entry with closest deadline.
      33             :    *
      34             :    * @param calculate_weight for implementations that choose to support it, this predicate specifies
      35             :    * the new weight of the entry.
      36             :    * @return std::shared_ptr<C> to next valid the queue entry if or nullptr if none exists.
      37             :    */
      38             :   virtual std::shared_ptr<C> pickAndAdd(std::function<double(const C&)> calculate_weight) = 0;
      39             : 
      40             :   /**
      41             :    * Insert entry into queue with a given weight.
      42             :    *
      43             :    * @param weight entry weight.
      44             :    * @param entry shared pointer to entry.
      45             :    */
      46             :   virtual void add(double weight, std::shared_ptr<C> entry) = 0;
      47             : 
      48             :   /**
      49             :    * Returns true if the scheduler is empty and nothing has been added.
      50             :    *
      51             :    * @return bool whether or not the internal container is empty.
      52             :    */
      53             :   virtual bool empty() const = 0;
      54             : };
      55             : 
      56             : } // namespace Upstream
      57             : } // namespace Envoy

Generated by: LCOV version 1.15