| Index: chrome/browser/extensions/updater/request_queue_impl.h
|
| diff --git a/chrome/browser/extensions/updater/request_queue_impl.h b/chrome/browser/extensions/updater/request_queue_impl.h
|
| deleted file mode 100644
|
| index db167e83cd6d92208bde684db451439628ddb715..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/extensions/updater/request_queue_impl.h
|
| +++ /dev/null
|
| @@ -1,154 +0,0 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#ifndef CHROME_BROWSER_EXTENSIONS_UPDATER_REQUEST_QUEUE_IMPL_H_
|
| -#define CHROME_BROWSER_EXTENSIONS_UPDATER_REQUEST_QUEUE_IMPL_H_
|
| -
|
| -#include <algorithm>
|
| -
|
| -#include "base/bind.h"
|
| -#include "base/compiler_specific.h"
|
| -#include "base/message_loop/message_loop.h"
|
| -#include "base/stl_util.h"
|
| -#include "chrome/browser/extensions/updater/request_queue.h"
|
| -
|
| -namespace extensions {
|
| -
|
| -template<typename T>
|
| -RequestQueue<T>::RequestQueue(
|
| - const net::BackoffEntry::Policy* const backoff_policy,
|
| - const base::Closure& start_request_callback)
|
| - : backoff_policy_(backoff_policy),
|
| - start_request_callback_(start_request_callback),
|
| - timer_(false, false) {
|
| -}
|
| -
|
| -template<typename T>
|
| -RequestQueue<T>::~RequestQueue() {}
|
| -
|
| -template<typename T>
|
| -T* RequestQueue<T>::active_request() {
|
| - return active_request_.get();
|
| -}
|
| -
|
| -template<typename T>
|
| -int RequestQueue<T>::active_request_failure_count() {
|
| - return active_backoff_entry_->failure_count();
|
| -}
|
| -
|
| -template<typename T>
|
| -scoped_ptr<T> RequestQueue<T>::reset_active_request() {
|
| - active_backoff_entry_.reset();
|
| - return active_request_.Pass();
|
| -}
|
| -
|
| -template<typename T>
|
| -void RequestQueue<T>::ScheduleRequest(scoped_ptr<T> request) {
|
| - PushImpl(request.Pass(), scoped_ptr<net::BackoffEntry>(
|
| - new net::BackoffEntry(backoff_policy_)));
|
| - StartNextRequest();
|
| -}
|
| -
|
| -template<typename T>
|
| -void RequestQueue<T>::PushImpl(scoped_ptr<T> request,
|
| - scoped_ptr<net::BackoffEntry> backoff_entry) {
|
| - pending_requests_.push_back(Request(
|
| - backoff_entry.release(), request.release()));
|
| - std::push_heap(pending_requests_.begin(), pending_requests_.end(),
|
| - CompareRequests);
|
| -}
|
| -
|
| -template<typename T>
|
| -bool RequestQueue<T>::empty() const {
|
| - return pending_requests_.empty();
|
| -}
|
| -
|
| -template<typename T>
|
| -size_t RequestQueue<T>::size() const {
|
| - return pending_requests_.size();
|
| -}
|
| -
|
| -template<typename T>
|
| -base::TimeTicks RequestQueue<T>::NextReleaseTime() const {
|
| - return pending_requests_.front().backoff_entry->GetReleaseTime();
|
| -}
|
| -
|
| -template<typename T>
|
| -void RequestQueue<T>::StartNextRequest() {
|
| - if (active_request_)
|
| - // Already running a request, assume this method will be called again when
|
| - // the request is done.
|
| - return;
|
| -
|
| - if (empty())
|
| - // No requests in the queue, so we're done.
|
| - return;
|
| -
|
| - base::TimeTicks next_release = NextReleaseTime();
|
| - base::TimeTicks now = base::TimeTicks::Now();
|
| - if (next_release > now) {
|
| - // Not ready for the next update check yet, call this method when it is
|
| - // time.
|
| - timer_.Start(FROM_HERE, next_release - now,
|
| - base::Bind(&RequestQueue<T>::StartNextRequest,
|
| - base::Unretained(this)));
|
| - return;
|
| - }
|
| -
|
| - // pop_heap swaps the first and last elements of pending_requests_, and after
|
| - // that assures that the rest of pending_requests_ (excluding the
|
| - // now last/formerly first element) forms a proper heap. After pop_heap
|
| - // [begin, end-1) is a valid heap, and *(end - 1) contains the element that
|
| - // used to be at the top of the heap. Since no elements are actually
|
| - // removed from the container it is safe to read the entry being removed after
|
| - // pop_heap is called (but before pop_back is called).
|
| - std::pop_heap(pending_requests_.begin(), pending_requests_.end(),
|
| - CompareRequests);
|
| -
|
| - active_backoff_entry_.reset(pending_requests_.back().backoff_entry.release());
|
| - active_request_.reset(pending_requests_.back().request.release());
|
| -
|
| - pending_requests_.pop_back();
|
| -
|
| - start_request_callback_.Run();
|
| -}
|
| -
|
| -template<typename T>
|
| -void RequestQueue<T>::RetryRequest(const base::TimeDelta& min_backoff_delay) {
|
| - active_backoff_entry_->InformOfRequest(false);
|
| - if (active_backoff_entry_->GetTimeUntilRelease() < min_backoff_delay) {
|
| - active_backoff_entry_->SetCustomReleaseTime(
|
| - base::TimeTicks::Now() + min_backoff_delay);
|
| - }
|
| - PushImpl(active_request_.Pass(), active_backoff_entry_.Pass());
|
| -}
|
| -
|
| -template<typename T>
|
| -typename RequestQueue<T>::iterator RequestQueue<T>::begin() {
|
| - return iterator(pending_requests_.begin());
|
| -}
|
| -
|
| -template<typename T>
|
| -typename RequestQueue<T>::iterator RequestQueue<T>::end() {
|
| - return iterator(pending_requests_.end());
|
| -}
|
| -
|
| -template<typename T>
|
| -void RequestQueue<T>::set_backoff_policy(
|
| - const net::BackoffEntry::Policy* backoff_policy) {
|
| - backoff_policy_ = backoff_policy;
|
| -}
|
| -
|
| -// static
|
| -template<typename T>
|
| -bool RequestQueue<T>::CompareRequests(
|
| - const Request& a,
|
| - const Request& b) {
|
| - return a.backoff_entry->GetReleaseTime() >
|
| - b.backoff_entry->GetReleaseTime();
|
| -}
|
| -
|
| -} // namespace extensions
|
| -
|
| -#endif // CHROME_BROWSER_EXTENSIONS_UPDATER_REQUEST_QUEUE_IMPL_H_
|
|
|