template <typename T, typename K>
class OpQueue {
+public:
+ // Ops of this class should be deleted immediately. If out isn't
+ // nullptr then items should be added to the front in
+ // front-to-back order. The typical strategy is to visit items in
+ // the queue in *reverse* order and to use *push_front* to insert
+ // them into out.
+ virtual void remove_by_class(K k, std::list<T> *out) = 0;
- public:
- // Ops of this class should be deleted immediately. If out isn't
- // nullptr then items should be added to the front in
- // front-to-back order. The typical strategy is to visit items in
- // the queue in *reverse* order and to use *push_front* to insert
- // them into out.
- virtual void remove_by_class(K k, std::list<T> *out) = 0;
- // Enqueue op in the back of the strict queue
- virtual void enqueue_strict(K cl, unsigned priority, T &&item) = 0;
- // Enqueue op in the front of the strict queue
- virtual void enqueue_strict_front(K cl, unsigned priority, T &&item) = 0;
- // Enqueue op in the back of the regular queue
- virtual void enqueue(K cl, unsigned priority, unsigned cost, T &&item) = 0;
- // Enqueue the op in the front of the regular queue
- virtual void enqueue_front(
- K cl, unsigned priority, unsigned cost, T &&item) = 0;
- // Returns if the queue is empty
- virtual bool empty() const = 0;
- // Return an op to be dispatch
- virtual T dequeue() = 0;
- // Formatted output of the queue
- virtual void dump(ceph::Formatter *f) const = 0;
- // Don't leak resources on destruction
- virtual ~OpQueue() {};
+ // Enqueue op in the back of the strict queue
+ virtual void enqueue_strict(K cl, unsigned priority, T &&item) = 0;
+
+ // Enqueue op in the front of the strict queue
+ virtual void enqueue_strict_front(K cl, unsigned priority, T &&item) = 0;
+
+ // Enqueue op in the back of the regular queue
+ virtual void enqueue(K cl, unsigned priority, unsigned cost, T &&item) = 0;
+
+ // Enqueue the op in the front of the regular queue
+ virtual void enqueue_front(
+ K cl, unsigned priority, unsigned cost, T &&item) = 0;
+
+ // Returns if the queue is empty
+ virtual bool empty() const = 0;
+
+ // Return an op to be dispatch
+ virtual T dequeue() = 0;
+
+ // Formatted output of the queue
+ virtual void dump(ceph::Formatter *f) const = 0;
+
+ // Don't leak resources on destruction
+ virtual ~OpQueue() {};
};
#endif