Index: sync/sessions/nudge_tracker.cc |
diff --git a/sync/sessions/nudge_tracker.cc b/sync/sessions/nudge_tracker.cc |
index f96d3464826e86653fb04d515c7d9575d891f2be..8ad215b26a73c90d20b00595d6bdc4d56fdb46a6 100644 |
--- a/sync/sessions/nudge_tracker.cc |
+++ b/sync/sessions/nudge_tracker.cc |
@@ -18,7 +18,8 @@ size_t NudgeTracker::kDefaultMaxPayloadsPerType = 10; |
NudgeTracker::NudgeTracker() |
: updates_source_(sync_pb::GetUpdatesCallerInfo::UNKNOWN), |
invalidations_enabled_(false), |
- invalidations_out_of_sync_(true) { |
+ invalidations_out_of_sync_(true), |
+ is_retry_required_(false) { |
ModelTypeSet protocol_types = ProtocolTypes(); |
// Default initialize all the type trackers. |
for (ModelTypeSet::Iterator it = protocol_types.First(); it.Good(); |
@@ -44,11 +45,11 @@ bool NudgeTracker::IsSyncRequired() const { |
return false; |
} |
-bool NudgeTracker::IsGetUpdatesRequired(base::TimeTicks now) const { |
+bool NudgeTracker::IsGetUpdatesRequired() const { |
if (invalidations_out_of_sync_) |
return true; |
- if (IsRetryRequired(now)) |
+ if (IsRetryRequired()) |
return true; |
for (TypeTrackerMap::const_iterator it = type_trackers_.begin(); |
@@ -60,16 +61,18 @@ bool NudgeTracker::IsGetUpdatesRequired(base::TimeTicks now) const { |
return false; |
} |
-bool NudgeTracker::IsRetryRequired(base::TimeTicks now) const { |
- return !next_retry_time_.is_null() && next_retry_time_ < now; |
+bool NudgeTracker::IsRetryRequired() const { |
+ return is_retry_required_; |
} |
-void NudgeTracker::RecordSuccessfulSyncCycle(base::TimeTicks now) { |
+void NudgeTracker::RecordSuccessfulSyncCycle() { |
updates_source_ = sync_pb::GetUpdatesCallerInfo::UNKNOWN; |
- last_successful_sync_time_ = now; |
- if (next_retry_time_ < now) |
+ // If a retry was required, we've just serviced it. Unset the flag. |
+ if (is_retry_required_) { |
+ is_retry_required_ = false; |
next_retry_time_ = base::TimeTicks(); |
+ } |
// A successful cycle while invalidations are enabled puts us back into sync. |
invalidations_out_of_sync_ = !invalidations_enabled_; |
@@ -239,6 +242,18 @@ void NudgeTracker::FillProtoMessage( |
type_trackers_.find(type)->second.FillGetUpdatesTriggersMessage(msg); |
} |
+void NudgeTracker::ToggleRetryFlagIfRequired(base::TimeTicks now) { |
haitaol1
2014/01/27 23:17:07
Seems redundant to keep both is_retry_required and
rlarocque
2014/01/28 01:06:34
I wanted to avoid saving the value of 'now' inside
|
+ // Nothing to do if no retries are scheduled for the future. |
+ if (next_retry_time_.is_null()) |
+ return; |
+ |
+ if (next_retry_time_ < now) { |
+ // The time has come. We should perform a GU retry as soon as possible. |
+ is_retry_required_ = true; |
+ next_retry_time_ = base::TimeTicks(); |
+ } |
+} |
+ |
void NudgeTracker::SetHintBufferSize(size_t size) { |
for (TypeTrackerMap::iterator it = type_trackers_.begin(); |
it != type_trackers_.end(); ++it) { |
@@ -246,5 +261,9 @@ void NudgeTracker::SetHintBufferSize(size_t size) { |
} |
} |
+void NudgeTracker::SetNextRetryTime(base::TimeTicks retry_time) { |
+ next_retry_time_ = retry_time; |
+} |
+ |
} // namespace sessions |
} // namespace syncer |