// 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_PRIORITIZED_DISPATCHER_H_ #define NET_BASE_PRIORITIZED_DISPATCHER_H_ #include <stddef.h> #include <vector> #include "net/base/net_export.h" #include "net/base/priority_queue.h" namespace net { // A priority-based dispatcher of jobs. Dispatch order is by priority (highest // first) and then FIFO. The dispatcher enforces limits on the number of running // jobs. It never revokes a job once started. The job must call OnJobFinished // once it finishes in order to dispatch further jobs. // // This class is NOT thread-safe which is enforced by the underlying // non-thread-safe PriorityQueue. All operations are O(p) time for p priority // levels. It is safe to execute any method, including destructor, from within // Job::Start. // class NET_EXPORT_PRIVATE PrioritizedDispatcher { … }; } // namespace net #endif // NET_BASE_PRIORITIZED_DISPATCHER_H_