Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(415)

Unified Diff: chrome/browser/url_fetcher_protect.cc

Issue 18305: Move url_* to net subdir (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 11 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/url_fetcher_protect.h ('k') | chrome/browser/url_fetcher_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/url_fetcher_protect.cc
===================================================================
--- chrome/browser/url_fetcher_protect.cc (revision 8164)
+++ chrome/browser/url_fetcher_protect.cc (working copy)
@@ -1,173 +0,0 @@
-// Copyright (c) 2006-2008 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.
-
-#include "chrome/browser/url_fetcher_protect.h"
-
-// URLFetcherProtectEntry ----------------------------------------------------
-
-using base::TimeDelta;
-using base::TimeTicks;
-
-// Default parameters. Time is in milliseconds.
-// static
-const int URLFetcherProtectEntry::kDefaultSlidingWindowPeriod = 2000;
-
-const int URLFetcherProtectEntry::kDefaultMaxSendThreshold = 20;
-const int URLFetcherProtectEntry::kDefaultMaxRetries = 0;
-
-const int URLFetcherProtectEntry::kDefaultInitialTimeout = 100;
-const double URLFetcherProtectEntry::kDefaultMultiplier = 2.0;
-const int URLFetcherProtectEntry::kDefaultConstantFactor = 100;
-const int URLFetcherProtectEntry::kDefaultMaximumTimeout = 60000;
-
-
-URLFetcherProtectEntry::URLFetcherProtectEntry()
- : sliding_window_period_(kDefaultSlidingWindowPeriod),
- max_send_threshold_(kDefaultMaxSendThreshold),
- max_retries_(kDefaultMaxRetries),
- initial_timeout_(kDefaultInitialTimeout),
- multiplier_(kDefaultMultiplier),
- constant_factor_(kDefaultConstantFactor),
- maximum_timeout_(kDefaultMaximumTimeout) {
- ResetBackoff();
-}
-
-URLFetcherProtectEntry::URLFetcherProtectEntry(int sliding_window_period,
- int max_send_threshold,
- int max_retries,
- int initial_timeout,
- double multiplier,
- int constant_factor,
- int maximum_timeout)
- : sliding_window_period_(sliding_window_period),
- max_send_threshold_(max_send_threshold),
- max_retries_(max_retries),
- initial_timeout_(initial_timeout),
- multiplier_(multiplier),
- constant_factor_(constant_factor),
- maximum_timeout_(maximum_timeout) {
- ResetBackoff();
-}
-
-int URLFetcherProtectEntry::UpdateBackoff(EventType event_type) {
- // request may be sent in different threads
- AutoLock lock(lock_);
-
- TimeDelta t;
- switch (event_type) {
- case SEND:
- t = AntiOverload();
- break;
- case SUCCESS:
- t = ResetBackoff();
- break;
- case FAILURE:
- t = IncreaseBackoff();
- break;
- default:
- NOTREACHED();
- }
-
- int wait = static_cast<int>(t.InMilliseconds());
- DCHECK(wait >= 0);
- return wait;
-}
-
-TimeDelta URLFetcherProtectEntry::AntiOverload() {
- TimeDelta sw = TimeDelta::FromMilliseconds(sliding_window_period_);
- TimeTicks now = TimeTicks::Now();
- // Estimate when the next request will be sent.
- release_time_ = now;
- if (send_log_.size() > 0) {
- release_time_ = std::max(release_time_, send_log_.back());
- }
- // Checks if there are too many send events in recent time.
- if (send_log_.size() >= static_cast<unsigned>(max_send_threshold_)) {
- release_time_ = std::max(release_time_, send_log_.front() + sw);
- }
- // Logs the new send event.
- send_log_.push(release_time_);
- // Drops the out-of-date events in the event list.
- while (!send_log_.empty() &&
- (send_log_.front() + sw <= send_log_.back())) {
- send_log_.pop();
- }
- return release_time_ - now;
-}
-
-TimeDelta URLFetcherProtectEntry::ResetBackoff() {
- timeout_period_ = initial_timeout_;
- release_time_ = TimeTicks::Now();
- return TimeDelta::FromMilliseconds(0);
-}
-
-TimeDelta URLFetcherProtectEntry::IncreaseBackoff() {
- TimeTicks now = TimeTicks::Now();
-
- release_time_ = std::max(release_time_, now) +
- TimeDelta::FromMilliseconds(timeout_period_);
-
- // Calculates the new backoff time.
- timeout_period_ = static_cast<int>
- (multiplier_ * timeout_period_ + constant_factor_);
- if (maximum_timeout_ && timeout_period_ > maximum_timeout_)
- timeout_period_ = maximum_timeout_;
-
- return release_time_ - now;
-}
-
-// URLFetcherProtectManager --------------------------------------------------
-
-// static
-scoped_ptr<URLFetcherProtectManager> URLFetcherProtectManager::protect_manager_;
-Lock URLFetcherProtectManager::lock_;
-
-URLFetcherProtectManager::~URLFetcherProtectManager() {
- // Deletes all entries
- ProtectService::iterator i;
- for (i = services_.begin(); i != services_.end(); ++i) {
- if (i->second)
- delete i->second;
- }
-}
-
-// static
-URLFetcherProtectManager* URLFetcherProtectManager::GetInstance() {
- AutoLock lock(lock_);
-
- if (protect_manager_.get() == NULL) {
- protect_manager_.reset(new URLFetcherProtectManager());
- }
- return protect_manager_.get();
-}
-
-URLFetcherProtectEntry* URLFetcherProtectManager::Register(std::string id) {
- AutoLock lock(lock_);
-
- ProtectService::iterator i = services_.find(id);
-
- if (i != services_.end()) {
- // The entry exists.
- return i->second;
- }
-
- // Creates a new entry.
- URLFetcherProtectEntry* entry = new URLFetcherProtectEntry();
- services_[id] = entry;
- return entry;
-}
-
-URLFetcherProtectEntry* URLFetcherProtectManager::Register(
- std::string id, URLFetcherProtectEntry* entry) {
- AutoLock lock(lock_);
-
- ProtectService::iterator i = services_.find(id);
- if (i != services_.end()) {
- // The entry exists.
- delete i->second;
- }
-
- services_[id] = entry;
- return entry;
-}
« no previous file with comments | « chrome/browser/url_fetcher_protect.h ('k') | chrome/browser/url_fetcher_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698