OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/net/url_fetcher_protect.h" | 5 #include "chrome/browser/net/url_fetcher_protect.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 | 8 |
9 // URLFetcherProtectEntry ---------------------------------------------------- | 9 // URLFetcherProtectEntry ---------------------------------------------------- |
10 | 10 |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
45 : sliding_window_period_(sliding_window_period), | 45 : sliding_window_period_(sliding_window_period), |
46 max_send_threshold_(max_send_threshold), | 46 max_send_threshold_(max_send_threshold), |
47 max_retries_(max_retries), | 47 max_retries_(max_retries), |
48 initial_timeout_(initial_timeout), | 48 initial_timeout_(initial_timeout), |
49 multiplier_(multiplier), | 49 multiplier_(multiplier), |
50 constant_factor_(constant_factor), | 50 constant_factor_(constant_factor), |
51 maximum_timeout_(maximum_timeout) { | 51 maximum_timeout_(maximum_timeout) { |
52 ResetBackoff(); | 52 ResetBackoff(); |
53 } | 53 } |
54 | 54 |
55 int URLFetcherProtectEntry::UpdateBackoff(EventType event_type) { | 55 int64 URLFetcherProtectEntry::UpdateBackoff(EventType event_type) { |
56 // request may be sent in different threads | 56 // request may be sent in different threads |
57 AutoLock lock(lock_); | 57 AutoLock lock(lock_); |
58 | 58 |
59 TimeDelta t; | 59 TimeDelta t; |
60 switch (event_type) { | 60 switch (event_type) { |
61 case SEND: | 61 case SEND: |
62 t = AntiOverload(); | 62 t = AntiOverload(); |
63 break; | 63 break; |
64 case SUCCESS: | 64 case SUCCESS: |
65 t = ResetBackoff(); | 65 t = ResetBackoff(); |
66 break; | 66 break; |
67 case FAILURE: | 67 case FAILURE: |
68 t = IncreaseBackoff(); | 68 t = IncreaseBackoff(); |
69 break; | 69 break; |
70 default: | 70 default: |
71 NOTREACHED(); | 71 NOTREACHED(); |
72 } | 72 } |
73 | 73 |
74 int wait = static_cast<int>(t.InMilliseconds()); | 74 int64 wait = t.InMilliseconds(); |
75 DCHECK(wait >= 0); | 75 DCHECK(wait >= 0); |
76 return wait; | 76 return wait; |
77 } | 77 } |
78 | 78 |
79 TimeDelta URLFetcherProtectEntry::AntiOverload() { | 79 TimeDelta URLFetcherProtectEntry::AntiOverload() { |
80 TimeDelta sw = TimeDelta::FromMilliseconds(sliding_window_period_); | 80 TimeDelta sw = TimeDelta::FromMilliseconds(sliding_window_period_); |
81 TimeTicks now = TimeTicks::Now(); | 81 TimeTicks now = TimeTicks::Now(); |
82 // Estimate when the next request will be sent. | 82 // Estimate when the next request will be sent. |
83 release_time_ = now; | 83 release_time_ = now; |
84 if (send_log_.size() > 0) { | 84 if (send_log_.size() > 0) { |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
166 | 166 |
167 ProtectService::iterator i = services_.find(id); | 167 ProtectService::iterator i = services_.find(id); |
168 if (i != services_.end()) { | 168 if (i != services_.end()) { |
169 // The entry exists. | 169 // The entry exists. |
170 delete i->second; | 170 delete i->second; |
171 } | 171 } |
172 | 172 |
173 services_[id] = entry; | 173 services_[id] = entry; |
174 return entry; | 174 return entry; |
175 } | 175 } |
OLD | NEW |