Chromium Code Reviews| Index: content/browser/loader/resource_scheduler.h |
| diff --git a/content/browser/loader/resource_scheduler.h b/content/browser/loader/resource_scheduler.h |
| index fa53c5b318f291d1d68a6054f4353d20958552b1..9f31af8cc7716d1fe6f66221f72e91e4effcd8bd 100644 |
| --- a/content/browser/loader/resource_scheduler.h |
| +++ b/content/browser/loader/resource_scheduler.h |
| @@ -7,7 +7,6 @@ |
| #include <map> |
| #include <set> |
| -#include <vector> |
| #include "base/basictypes.h" |
| #include "base/compiler_specific.h" |
| @@ -16,6 +15,7 @@ |
| #include "base/threading/non_thread_safe.h" |
| #include "content/common/content_export.h" |
| #include "content/public/browser/global_request_id.h" |
| +#include "net/base/priority_queue.h" |
| namespace net { |
| class URLRequest; |
| @@ -76,7 +76,7 @@ class CONTENT_EXPORT ResourceScheduler : public base::NonThreadSafe { |
| typedef int64 ClientId; |
| typedef std::map<ClientId, Client*> ClientMap; |
| - typedef std::vector<ScheduledResourceRequest*> RequestQueue; |
| + typedef net::PriorityQueue<ScheduledResourceRequest*> RequestQueue; |
| typedef std::set<ScheduledResourceRequest*> RequestSet; |
| struct Client { |
| @@ -94,9 +94,22 @@ class CONTENT_EXPORT ResourceScheduler : public base::NonThreadSafe { |
| // Unthrottles the |request| and adds it to |client|. |
| void StartRequest(ScheduledResourceRequest* request, Client* client); |
| - // Calls StartRequest on all pending requests for |client|. |
| + // Update the queue position for |request|, possibly causing it to start |
| + // loading. |
| + void ReprioritizeRequest(ScheduledResourceRequest* request); |
|
willchan no longer on Chromium
2013/03/18 07:30:33
There's some undocumented behavior here, namely th
James Simonsen
2013/03/18 23:50:13
Done.
I also thought about the always-at-end thin
|
| + |
| + // Attempts to load any pending requests in |client|, based on the |
| + // ShouldStartRequest(). |
| void LoadPendingRequests(Client* client); |
|
willchan no longer on Chromium
2013/03/18 07:30:33
Nit: Can we get a better name? I leave it up to yo
James Simonsen
2013/03/18 23:50:13
Done.
|
| + // Returns the number of requests with priority < LOW that are currently in |
| + // flight. |
| + int GetNumLowPriorityRequestsInFlight(Client* client); |
|
willchan no longer on Chromium
2013/03/18 07:30:33
Looks like it should be const
James Simonsen
2013/03/18 23:50:13
Done.
|
| + |
| + // Returns true if the request should start. This is the core scheduling |
| + // algorithm. |
| + bool ShouldStartRequest(ScheduledResourceRequest* request, Client* client); |
|
willchan no longer on Chromium
2013/03/18 07:30:33
Looks like it should be const
James Simonsen
2013/03/18 23:50:13
Done.
|
| + |
| // Returns the client ID for the given |child_id| and |route_id| combo. |
| ClientId MakeClientId(int child_id, int route_id); |