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

Side by Side Diff: chrome/browser/sync/engine/syncer_proto_util.cc

Issue 7605021: Make the throttle delay configurable by the server. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Review comments. Created 9 years, 4 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/sync/engine/syncer_proto_util.h ('k') | chrome/browser/sync/protocol/sync.proto » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/sync/engine/syncer_proto_util.h" 5 #include "chrome/browser/sync/engine/syncer_proto_util.h"
6 6
7 #include "base/format_macros.h" 7 #include "base/format_macros.h"
8 #include "base/stringprintf.h" 8 #include "base/stringprintf.h"
9 #include "chrome/browser/sync/engine/net/server_connection_manager.h" 9 #include "chrome/browser/sync/engine/net/server_connection_manager.h"
10 #include "chrome/browser/sync/engine/syncer.h" 10 #include "chrome/browser/sync/engine/syncer.h"
11 #include "chrome/browser/sync/engine/syncer_types.h" 11 #include "chrome/browser/sync/engine/syncer_types.h"
12 #include "chrome/browser/sync/engine/syncer_util.h" 12 #include "chrome/browser/sync/engine/syncer_util.h"
13 #include "chrome/browser/sync/protocol/service_constants.h" 13 #include "chrome/browser/sync/protocol/service_constants.h"
14 #include "chrome/browser/sync/protocol/sync.pb.h"
14 #include "chrome/browser/sync/sessions/sync_session.h" 15 #include "chrome/browser/sync/sessions/sync_session.h"
15 #include "chrome/browser/sync/syncable/directory_manager.h" 16 #include "chrome/browser/sync/syncable/directory_manager.h"
16 #include "chrome/browser/sync/syncable/model_type.h" 17 #include "chrome/browser/sync/syncable/model_type.h"
17 #include "chrome/browser/sync/syncable/syncable-inl.h" 18 #include "chrome/browser/sync/syncable/syncable-inl.h"
18 #include "chrome/browser/sync/syncable/syncable.h" 19 #include "chrome/browser/sync/syncable/syncable.h"
19 20
20 using std::string; 21 using std::string;
21 using std::stringstream; 22 using std::stringstream;
22 using syncable::BASE_VERSION; 23 using syncable::BASE_VERSION;
23 using syncable::CTIME; 24 using syncable::CTIME;
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 http_response.server_status = HttpResponse::SYNC_AUTH_ERROR; 176 http_response.server_status = HttpResponse::SYNC_AUTH_ERROR;
176 return false; 177 return false;
177 default: 178 default:
178 return true; 179 return true;
179 } 180 }
180 } 181 }
181 182
182 return false; 183 return false;
183 } 184 }
184 185
186 base::TimeDelta SyncerProtoUtil::GetThrottleDelay(
187 const sync_pb::ClientToServerResponse& response) {
188 base::TimeDelta throttle_delay =
189 base::TimeDelta::FromSeconds(kSyncDelayAfterThrottled);
190 if (response.has_client_command()) {
191 const sync_pb::ClientCommand& command = response.client_command();
192 if (command.has_throttle_delay_seconds()) {
193 throttle_delay =
194 base::TimeDelta::FromSeconds(command.throttle_delay_seconds());
195 }
196 }
197 return throttle_delay;
198 }
199
185 namespace { 200 namespace {
186 201
187 // Helper function for an assertion in PostClientToServerMessage. 202 // Helper function for an assertion in PostClientToServerMessage.
188 bool IsVeryFirstGetUpdates(const ClientToServerMessage& message) { 203 bool IsVeryFirstGetUpdates(const ClientToServerMessage& message) {
189 if (!message.has_get_updates()) 204 if (!message.has_get_updates())
190 return false; 205 return false;
191 DCHECK_LT(0, message.get_updates().from_progress_marker_size()); 206 DCHECK_LT(0, message.get_updates().from_progress_marker_size());
192 for (int i = 0; i < message.get_updates().from_progress_marker_size(); ++i) { 207 for (int i = 0; i < message.get_updates().from_progress_marker_size(); ++i) {
193 if (!message.get_updates().from_progress_marker(i).token().empty()) 208 if (!message.get_updates().from_progress_marker(i).token().empty())
194 return false; 209 return false;
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 case ClientToServerResponse::UNKNOWN: 244 case ClientToServerResponse::UNKNOWN:
230 LOG(WARNING) << "Sync protocol out-of-date. The server is using a more " 245 LOG(WARNING) << "Sync protocol out-of-date. The server is using a more "
231 << "recent version."; 246 << "recent version.";
232 return false; 247 return false;
233 case ClientToServerResponse::SUCCESS: 248 case ClientToServerResponse::SUCCESS:
234 LogResponseProfilingData(*response); 249 LogResponseProfilingData(*response);
235 return true; 250 return true;
236 case ClientToServerResponse::THROTTLED: 251 case ClientToServerResponse::THROTTLED:
237 LOG(WARNING) << "Client silenced by server."; 252 LOG(WARNING) << "Client silenced by server.";
238 session->delegate()->OnSilencedUntil(base::TimeTicks::Now() + 253 session->delegate()->OnSilencedUntil(base::TimeTicks::Now() +
239 base::TimeDelta::FromSeconds(kSyncDelayAfterThrottled)); 254 GetThrottleDelay(*response));
240 return false; 255 return false;
241 case ClientToServerResponse::TRANSIENT_ERROR: 256 case ClientToServerResponse::TRANSIENT_ERROR:
242 return false; 257 return false;
243 case ClientToServerResponse::MIGRATION_DONE: 258 case ClientToServerResponse::MIGRATION_DONE:
244 HandleMigrationDoneResponse(response, session); 259 HandleMigrationDoneResponse(response, session);
245 return false; 260 return false;
246 case ClientToServerResponse::USER_NOT_ACTIVATED: 261 case ClientToServerResponse::USER_NOT_ACTIVATED:
247 case ClientToServerResponse::AUTH_INVALID: 262 case ClientToServerResponse::AUTH_INVALID:
248 case ClientToServerResponse::ACCESS_DENIED: 263 case ClientToServerResponse::ACCESS_DENIED:
249 // WARNING: PostAndProcessHeaders contains a hack for this case. 264 // WARNING: PostAndProcessHeaders contains a hack for this case.
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
375 std::string SyncerProtoUtil::ClientToServerResponseDebugString( 390 std::string SyncerProtoUtil::ClientToServerResponseDebugString(
376 const sync_pb::ClientToServerResponse& response) { 391 const sync_pb::ClientToServerResponse& response) {
377 // Add more handlers as needed. 392 // Add more handlers as needed.
378 std::string output; 393 std::string output;
379 if (response.has_get_updates()) 394 if (response.has_get_updates())
380 output.append(GetUpdatesResponseString(response.get_updates())); 395 output.append(GetUpdatesResponseString(response.get_updates()));
381 return output; 396 return output;
382 } 397 }
383 398
384 } // namespace browser_sync 399 } // namespace browser_sync
OLDNEW
« no previous file with comments | « chrome/browser/sync/engine/syncer_proto_util.h ('k') | chrome/browser/sync/protocol/sync.proto » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698