| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "sync/engine/sync_scheduler_impl.h" | 5 #include "sync/engine/sync_scheduler_impl.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <cstring> | 8 #include <cstring> |
| 9 | 9 |
| 10 #include "base/auto_reset.h" | 10 #include "base/auto_reset.h" |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 105 return ""; | 105 return ""; |
| 106 } | 106 } |
| 107 | 107 |
| 108 GetUpdatesCallerInfo::GetUpdatesSource GetUpdatesFromNudgeSource( | 108 GetUpdatesCallerInfo::GetUpdatesSource GetUpdatesFromNudgeSource( |
| 109 NudgeSource source) { | 109 NudgeSource source) { |
| 110 switch (source) { | 110 switch (source) { |
| 111 case NUDGE_SOURCE_NOTIFICATION: | 111 case NUDGE_SOURCE_NOTIFICATION: |
| 112 return GetUpdatesCallerInfo::NOTIFICATION; | 112 return GetUpdatesCallerInfo::NOTIFICATION; |
| 113 case NUDGE_SOURCE_LOCAL: | 113 case NUDGE_SOURCE_LOCAL: |
| 114 return GetUpdatesCallerInfo::LOCAL; | 114 return GetUpdatesCallerInfo::LOCAL; |
| 115 case NUDGE_SOURCE_CONTINUATION: | |
| 116 return GetUpdatesCallerInfo::SYNC_CYCLE_CONTINUATION; | |
| 117 case NUDGE_SOURCE_LOCAL_REFRESH: | 115 case NUDGE_SOURCE_LOCAL_REFRESH: |
| 118 return GetUpdatesCallerInfo::DATATYPE_REFRESH; | 116 return GetUpdatesCallerInfo::DATATYPE_REFRESH; |
| 119 case NUDGE_SOURCE_UNKNOWN: | 117 case NUDGE_SOURCE_UNKNOWN: |
| 120 return GetUpdatesCallerInfo::UNKNOWN; | 118 return GetUpdatesCallerInfo::UNKNOWN; |
| 121 default: | 119 default: |
| 122 NOTREACHED(); | 120 NOTREACHED(); |
| 123 return GetUpdatesCallerInfo::UNKNOWN; | 121 return GetUpdatesCallerInfo::UNKNOWN; |
| 124 } | 122 } |
| 125 } | 123 } |
| 126 | 124 |
| (...skipping 629 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 756 << ": " << GetDecisionString(decision); | 754 << ": " << GetDecisionString(decision); |
| 757 if (decision != CONTINUE) { | 755 if (decision != CONTINUE) { |
| 758 if (decision == SAVE) { | 756 if (decision == SAVE) { |
| 759 HandleSaveJobDecision(job.Pass()); | 757 HandleSaveJobDecision(job.Pass()); |
| 760 } else { | 758 } else { |
| 761 DCHECK_EQ(decision, DROP); | 759 DCHECK_EQ(decision, DROP); |
| 762 } | 760 } |
| 763 return false; | 761 return false; |
| 764 } | 762 } |
| 765 | 763 |
| 766 SDVLOG(2) << "DoSyncSessionJob with " | 764 SDVLOG(2) << "Calling SyncShare with " |
| 767 << SyncSessionJob::GetPurposeString(job->purpose()) << " job"; | 765 << SyncSessionJob::GetPurposeString(job->purpose()) << " job"; |
| 768 | 766 bool premature_exit = !syncer_->SyncShare(job->mutable_session(), |
| 769 bool has_more_to_sync = true; | 767 job->start_step(), |
| 770 bool premature_exit = false; | 768 job->end_step()); |
| 771 while (DecideOnJob(*job) == CONTINUE && has_more_to_sync) { | 769 SDVLOG(2) << "Done SyncShare, returned: " << premature_exit; |
| 772 SDVLOG(2) << "Calling SyncShare."; | |
| 773 // Synchronously perform the sync session from this thread. | |
| 774 premature_exit = !syncer_->SyncShare(job->mutable_session(), | |
| 775 job->start_step(), | |
| 776 job->end_step()); | |
| 777 | |
| 778 has_more_to_sync = job->session()->HasMoreToSync(); | |
| 779 if (has_more_to_sync) | |
| 780 job->mutable_session()->PrepareForAnotherSyncCycle(); | |
| 781 } | |
| 782 SDVLOG(2) << "Done SyncShare looping."; | |
| 783 | 770 |
| 784 return FinishSyncSessionJob(job.Pass(), premature_exit); | 771 return FinishSyncSessionJob(job.Pass(), premature_exit); |
| 785 } | 772 } |
| 786 | 773 |
| 787 void SyncSchedulerImpl::UpdateNudgeTimeRecords(const SyncSourceInfo& info) { | 774 void SyncSchedulerImpl::UpdateNudgeTimeRecords(const SyncSourceInfo& info) { |
| 788 DCHECK_EQ(MessageLoop::current(), sync_loop_); | 775 DCHECK_EQ(MessageLoop::current(), sync_loop_); |
| 789 | 776 |
| 790 // We are interested in recording time between local nudges for datatypes. | 777 // We are interested in recording time between local nudges for datatypes. |
| 791 // TODO(tim): Consider tracking LOCAL_NOTIFICATION as well. | 778 // TODO(tim): Consider tracking LOCAL_NOTIFICATION as well. |
| 792 if (info.updates_source != GetUpdatesCallerInfo::LOCAL) | 779 if (info.updates_source != GetUpdatesCallerInfo::LOCAL) |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 831 } | 818 } |
| 832 | 819 |
| 833 SDVLOG(2) << "Updating the next polling time after SyncMain"; | 820 SDVLOG(2) << "Updating the next polling time after SyncMain"; |
| 834 ScheduleNextSync(job.Pass(), succeeded); | 821 ScheduleNextSync(job.Pass(), succeeded); |
| 835 return succeeded; | 822 return succeeded; |
| 836 } | 823 } |
| 837 | 824 |
| 838 void SyncSchedulerImpl::ScheduleNextSync( | 825 void SyncSchedulerImpl::ScheduleNextSync( |
| 839 scoped_ptr<SyncSessionJob> finished_job, bool succeeded) { | 826 scoped_ptr<SyncSessionJob> finished_job, bool succeeded) { |
| 840 DCHECK_EQ(MessageLoop::current(), sync_loop_); | 827 DCHECK_EQ(MessageLoop::current(), sync_loop_); |
| 841 DCHECK(!finished_job->session()->HasMoreToSync()); | |
| 842 | 828 |
| 843 AdjustPolling(finished_job.get()); | 829 AdjustPolling(finished_job.get()); |
| 844 | 830 |
| 845 if (succeeded) { | 831 if (succeeded) { |
| 846 // Only reset backoff if we actually reached the server. | 832 // Only reset backoff if we actually reached the server. |
| 847 // It's possible that we reached the server on one attempt, then had an | 833 // It's possible that we reached the server on one attempt, then had an |
| 848 // error on the next (or didn't perform some of the server-communicating | 834 // error on the next (or didn't perform some of the server-communicating |
| 849 // commands). We want to verify that, for all commands attempted, we | 835 // commands). We want to verify that, for all commands attempted, we |
| 850 // successfully spoke with the server. Therefore, we verify no errors | 836 // successfully spoke with the server. Therefore, we verify no errors |
| 851 // and at least one SYNCER_OK. | 837 // and at least one SYNCER_OK. |
| (...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1178 | 1164 |
| 1179 #undef SDVLOG_LOC | 1165 #undef SDVLOG_LOC |
| 1180 | 1166 |
| 1181 #undef SDVLOG | 1167 #undef SDVLOG |
| 1182 | 1168 |
| 1183 #undef SLOG | 1169 #undef SLOG |
| 1184 | 1170 |
| 1185 #undef ENUM_CASE | 1171 #undef ENUM_CASE |
| 1186 | 1172 |
| 1187 } // namespace syncer | 1173 } // namespace syncer |
| OLD | NEW |