// Copyright 2012 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef NET_BASE_PRIORITY_QUEUE_H_ #define NET_BASE_PRIORITY_QUEUE_H_ #include <stddef.h> #include <stdint.h> #include <list> #include <utility> #include <vector> #include "base/check_op.h" #include "base/functional/bind.h" #include "base/functional/callback.h" #include "base/not_fatal_until.h" #include "base/threading/thread_checker.h" #if !defined(NDEBUG) #include <unordered_set> #endif namespace net { // A simple priority queue. The order of values is by priority and then FIFO. // Unlike the std::priority_queue, this implementation allows erasing elements // from the queue, and all operations are O(p) time for p priority levels. // The queue is agnostic to priority ordering (whether 0 precedes 1). // If the highest priority is 0, FirstMin() returns the first in order. // // In debug-mode, the internal queues store (id, value) pairs where id is used // to validate Pointers. // template <typename T> class PriorityQueue { … }; } // namespace net #endif // NET_BASE_PRIORITY_QUEUE_H_