| 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 "chrome/browser/chromeos/drive/job_scheduler.h" | 5 #include "chrome/browser/chromeos/drive/job_scheduler.h" |
| 6 | 6 |
| 7 #include "base/message_loop/message_loop.h" | 7 #include "base/message_loop/message_loop.h" |
| 8 #include "base/prefs/pref_service.h" | 8 #include "base/prefs/pref_service.h" |
| 9 #include "base/rand_util.h" | 9 #include "base/rand_util.h" |
| 10 #include "base/strings/string_number_conversions.h" | 10 #include "base/strings/string_number_conversions.h" |
| (...skipping 677 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 688 | 688 |
| 689 JobEntry* job_entry = job_map_.Lookup(job_id); | 689 JobEntry* job_entry = job_map_.Lookup(job_id); |
| 690 DCHECK(job_entry); | 690 DCHECK(job_entry); |
| 691 const JobInfo& job_info = job_entry->job_info; | 691 const JobInfo& job_info = job_entry->job_info; |
| 692 | 692 |
| 693 QueueType queue_type = GetJobQueueType(job_info.job_type); | 693 QueueType queue_type = GetJobQueueType(job_info.job_type); |
| 694 queue_[queue_type]->Push(job_id, job_entry->context.type); | 694 queue_[queue_type]->Push(job_id, job_entry->context.type); |
| 695 | 695 |
| 696 const std::string retry_prefix = job_entry->retry_count > 0 ? | 696 const std::string retry_prefix = job_entry->retry_count > 0 ? |
| 697 base::StringPrintf(" (retry %d)", job_entry->retry_count) : ""; | 697 base::StringPrintf(" (retry %d)", job_entry->retry_count) : ""; |
| 698 util::Log("Job queued%s: %s - %s", | 698 util::Log(logging::LOG_INFO, |
| 699 "Job queued%s: %s - %s", |
| 699 retry_prefix.c_str(), | 700 retry_prefix.c_str(), |
| 700 job_info.ToString().c_str(), | 701 job_info.ToString().c_str(), |
| 701 GetQueueInfo(queue_type).c_str()); | 702 GetQueueInfo(queue_type).c_str()); |
| 702 } | 703 } |
| 703 | 704 |
| 704 void JobScheduler::DoJobLoop(QueueType queue_type) { | 705 void JobScheduler::DoJobLoop(QueueType queue_type) { |
| 705 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 706 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 706 | 707 |
| 707 const int accepted_priority = GetCurrentAcceptedPriority(queue_type); | 708 const int accepted_priority = GetCurrentAcceptedPriority(queue_type); |
| 708 | 709 |
| (...skipping 16 matching lines...) Expand all Loading... |
| 725 JobEntry* entry = job_map_.Lookup(job_id); | 726 JobEntry* entry = job_map_.Lookup(job_id); |
| 726 DCHECK(entry); | 727 DCHECK(entry); |
| 727 | 728 |
| 728 JobInfo* job_info = &entry->job_info; | 729 JobInfo* job_info = &entry->job_info; |
| 729 job_info->state = STATE_RUNNING; | 730 job_info->state = STATE_RUNNING; |
| 730 job_info->start_time = base::Time::Now(); | 731 job_info->start_time = base::Time::Now(); |
| 731 NotifyJobUpdated(*job_info); | 732 NotifyJobUpdated(*job_info); |
| 732 | 733 |
| 733 entry->cancel_callback = entry->task.Run(); | 734 entry->cancel_callback = entry->task.Run(); |
| 734 | 735 |
| 735 util::Log("Job started: %s - %s", | 736 util::Log(logging::LOG_INFO, |
| 737 "Job started: %s - %s", |
| 736 job_info->ToString().c_str(), | 738 job_info->ToString().c_str(), |
| 737 GetQueueInfo(queue_type).c_str()); | 739 GetQueueInfo(queue_type).c_str()); |
| 738 } | 740 } |
| 739 | 741 |
| 740 int JobScheduler::GetCurrentAcceptedPriority(QueueType queue_type) { | 742 int JobScheduler::GetCurrentAcceptedPriority(QueueType queue_type) { |
| 741 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 743 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 742 | 744 |
| 743 const int kNoJobShouldRun = -1; | 745 const int kNoJobShouldRun = -1; |
| 744 | 746 |
| 745 // Should stop if Drive was disabled while running the fetch loop. | 747 // Should stop if Drive was disabled while running the fetch loop. |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 803 bool JobScheduler::OnJobDone(JobID job_id, google_apis::GDataErrorCode error) { | 805 bool JobScheduler::OnJobDone(JobID job_id, google_apis::GDataErrorCode error) { |
| 804 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 806 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 805 | 807 |
| 806 JobEntry* job_entry = job_map_.Lookup(job_id); | 808 JobEntry* job_entry = job_map_.Lookup(job_id); |
| 807 DCHECK(job_entry); | 809 DCHECK(job_entry); |
| 808 JobInfo* job_info = &job_entry->job_info; | 810 JobInfo* job_info = &job_entry->job_info; |
| 809 QueueType queue_type = GetJobQueueType(job_info->job_type); | 811 QueueType queue_type = GetJobQueueType(job_info->job_type); |
| 810 queue_[queue_type]->MarkFinished(job_id); | 812 queue_[queue_type]->MarkFinished(job_id); |
| 811 | 813 |
| 812 const base::TimeDelta elapsed = base::Time::Now() - job_info->start_time; | 814 const base::TimeDelta elapsed = base::Time::Now() - job_info->start_time; |
| 813 util::Log("Job done: %s => %s (elapsed time: %sms) - %s", | 815 bool success = (GDataToFileError(error) == FILE_ERROR_OK); |
| 816 util::Log(success ? logging::LOG_INFO : logging::LOG_WARNING, |
| 817 "Job done: %s => %s (elapsed time: %sms) - %s", |
| 814 job_info->ToString().c_str(), | 818 job_info->ToString().c_str(), |
| 815 GDataErrorCodeToString(error).c_str(), | 819 GDataErrorCodeToString(error).c_str(), |
| 816 base::Int64ToString(elapsed.InMilliseconds()).c_str(), | 820 base::Int64ToString(elapsed.InMilliseconds()).c_str(), |
| 817 GetQueueInfo(queue_type).c_str()); | 821 GetQueueInfo(queue_type).c_str()); |
| 818 | 822 |
| 819 // Retry, depending on the error. | 823 // Retry, depending on the error. |
| 820 if ((error == google_apis::HTTP_SERVICE_UNAVAILABLE || | 824 if ((error == google_apis::HTTP_SERVICE_UNAVAILABLE || |
| 821 error == google_apis::HTTP_INTERNAL_SERVER_ERROR) && | 825 error == google_apis::HTTP_INTERNAL_SERVER_ERROR) && |
| 822 job_entry->retry_count < kMaxRetryCount) { | 826 job_entry->retry_count < kMaxRetryCount) { |
| 823 job_entry->cancel_callback.Reset(); | 827 job_entry->cancel_callback.Reset(); |
| (...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1012 NOTREACHED(); | 1016 NOTREACHED(); |
| 1013 return FILE_QUEUE; | 1017 return FILE_QUEUE; |
| 1014 } | 1018 } |
| 1015 | 1019 |
| 1016 void JobScheduler::AbortNotRunningJob(JobEntry* job, | 1020 void JobScheduler::AbortNotRunningJob(JobEntry* job, |
| 1017 google_apis::GDataErrorCode error) { | 1021 google_apis::GDataErrorCode error) { |
| 1018 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 1022 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 1019 | 1023 |
| 1020 const base::TimeDelta elapsed = base::Time::Now() - job->job_info.start_time; | 1024 const base::TimeDelta elapsed = base::Time::Now() - job->job_info.start_time; |
| 1021 const QueueType queue_type = GetJobQueueType(job->job_info.job_type); | 1025 const QueueType queue_type = GetJobQueueType(job->job_info.job_type); |
| 1022 util::Log("Job aborted: %s => %s (elapsed time: %sms) - %s", | 1026 util::Log(logging::LOG_INFO, |
| 1027 "Job aborted: %s => %s (elapsed time: %sms) - %s", |
| 1023 job->job_info.ToString().c_str(), | 1028 job->job_info.ToString().c_str(), |
| 1024 GDataErrorCodeToString(error).c_str(), | 1029 GDataErrorCodeToString(error).c_str(), |
| 1025 base::Int64ToString(elapsed.InMilliseconds()).c_str(), | 1030 base::Int64ToString(elapsed.InMilliseconds()).c_str(), |
| 1026 GetQueueInfo(queue_type).c_str()); | 1031 GetQueueInfo(queue_type).c_str()); |
| 1027 | 1032 |
| 1028 base::Callback<void(google_apis::GDataErrorCode)> callback = | 1033 base::Callback<void(google_apis::GDataErrorCode)> callback = |
| 1029 job->abort_callback; | 1034 job->abort_callback; |
| 1030 queue_[GetJobQueueType(job->job_info.job_type)]->Remove(job->job_info.job_id); | 1035 queue_[GetJobQueueType(job->job_info.job_type)]->Remove(job->job_info.job_id); |
| 1031 NotifyJobDone(job->job_info, error); | 1036 NotifyJobDone(job->job_info, error); |
| 1032 job_map_.Remove(job->job_info.job_id); | 1037 job_map_.Remove(job->job_info.job_id); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 1063 case FILE_QUEUE: | 1068 case FILE_QUEUE: |
| 1064 return "FILE_QUEUE"; | 1069 return "FILE_QUEUE"; |
| 1065 case NUM_QUEUES: | 1070 case NUM_QUEUES: |
| 1066 break; // This value is just a sentinel. Should never be used. | 1071 break; // This value is just a sentinel. Should never be used. |
| 1067 } | 1072 } |
| 1068 NOTREACHED(); | 1073 NOTREACHED(); |
| 1069 return ""; | 1074 return ""; |
| 1070 } | 1075 } |
| 1071 | 1076 |
| 1072 } // namespace drive | 1077 } // namespace drive |
| OLD | NEW |