OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |