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

Side by Side Diff: update_attempter.cc

Issue 6624082: Start action processing asynchronously in UpdateAttempter. (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/update_engine.git@master
Patch Set: set to null Created 9 years, 9 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 | « update_attempter.h ('k') | update_attempter_unittest.cc » ('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) 2010 The Chromium OS Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium OS 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 "update_engine/update_attempter.h" 5 #include "update_engine/update_attempter.h"
6 6
7 // From 'man clock_gettime': feature test macro: _POSIX_C_SOURCE >= 199309L 7 // From 'man clock_gettime': feature test macro: _POSIX_C_SOURCE >= 199309L
8 #ifndef _POSIX_C_SOURCE 8 #ifndef _POSIX_C_SOURCE
9 #define _POSIX_C_SOURCE 199309L 9 #define _POSIX_C_SOURCE 199309L
10 #endif // _POSIX_C_SOURCE 10 #endif // _POSIX_C_SOURCE
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 BondActions(kernel_filesystem_copier_action.get(), 241 BondActions(kernel_filesystem_copier_action.get(),
242 download_action.get()); 242 download_action.get());
243 BondActions(download_action.get(), 243 BondActions(download_action.get(),
244 filesystem_verifier_action.get()); 244 filesystem_verifier_action.get());
245 BondActions(filesystem_verifier_action.get(), 245 BondActions(filesystem_verifier_action.get(),
246 kernel_filesystem_verifier_action.get()); 246 kernel_filesystem_verifier_action.get());
247 BondActions(kernel_filesystem_verifier_action.get(), 247 BondActions(kernel_filesystem_verifier_action.get(),
248 postinstall_runner_action.get()); 248 postinstall_runner_action.get());
249 249
250 SetStatusAndNotify(UPDATE_STATUS_CHECKING_FOR_UPDATE); 250 SetStatusAndNotify(UPDATE_STATUS_CHECKING_FOR_UPDATE);
251 processor_->StartProcessing(); 251
252 // Start the processing asynchronously to unblock the event loop.
253 g_idle_add(&StaticStartProcessing, this);
252 } 254 }
253 255
254 void UpdateAttempter::CheckForUpdate(const std::string& app_version, 256 void UpdateAttempter::CheckForUpdate(const std::string& app_version,
255 const std::string& omaha_url) { 257 const std::string& omaha_url) {
256 if (status_ != UPDATE_STATUS_IDLE) { 258 if (status_ != UPDATE_STATUS_IDLE) {
257 LOG(INFO) << "Check for update requested, but status is " 259 LOG(INFO) << "Check for update requested, but status is "
258 << UpdateStatusToString(status_) << ", so not checking."; 260 << UpdateStatusToString(status_) << ", so not checking.";
259 return; 261 return;
260 } 262 }
261 Update(app_version, omaha_url, true); 263 Update(app_version, omaha_url, true);
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after
520 g_source_destroy(manage_priority_source_); 522 g_source_destroy(manage_priority_source_);
521 manage_priority_source_ = NULL; 523 manage_priority_source_ = NULL;
522 } 524 }
523 SetPriority(utils::kProcessPriorityNormal); 525 SetPriority(utils::kProcessPriorityNormal);
524 } 526 }
525 527
526 gboolean UpdateAttempter::StaticManagePriorityCallback(gpointer data) { 528 gboolean UpdateAttempter::StaticManagePriorityCallback(gpointer data) {
527 return reinterpret_cast<UpdateAttempter*>(data)->ManagePriorityCallback(); 529 return reinterpret_cast<UpdateAttempter*>(data)->ManagePriorityCallback();
528 } 530 }
529 531
532 gboolean UpdateAttempter::StaticStartProcessing(gpointer data) {
533 reinterpret_cast<UpdateAttempter*>(data)->processor_->StartProcessing();
534 return FALSE; // Don't call this callback again.
535 }
536
530 bool UpdateAttempter::ManagePriorityCallback() { 537 bool UpdateAttempter::ManagePriorityCallback() {
531 SetPriority(utils::kProcessPriorityNormal); 538 SetPriority(utils::kProcessPriorityNormal);
532 manage_priority_source_ = NULL; 539 manage_priority_source_ = NULL;
533 return false; // Destroy the timeout source. 540 return false; // Destroy the timeout source.
534 } 541 }
535 542
536 void UpdateAttempter::DisableDeltaUpdateIfNeeded() { 543 void UpdateAttempter::DisableDeltaUpdateIfNeeded() {
537 int64_t delta_failures; 544 int64_t delta_failures;
538 if (omaha_request_params_.delta_okay && 545 if (omaha_request_params_.delta_okay &&
539 prefs_->GetInt64(kPrefsDeltaUpdateFailures, &delta_failures) && 546 prefs_->GetInt64(kPrefsDeltaUpdateFailures, &delta_failures) &&
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
572 uint64_t resume_offset = manifest_metadata_size + next_data_offset; 579 uint64_t resume_offset = manifest_metadata_size + next_data_offset;
573 if (resume_offset < response_handler_action_->install_plan().size) { 580 if (resume_offset < response_handler_action_->install_plan().size) {
574 fetcher->AddRange(resume_offset, -1); 581 fetcher->AddRange(resume_offset, -1);
575 } 582 }
576 } else { 583 } else {
577 fetcher->AddRange(0, -1); 584 fetcher->AddRange(0, -1);
578 } 585 }
579 } 586 }
580 587
581 } // namespace chromeos_update_engine 588 } // namespace chromeos_update_engine
OLDNEW
« no previous file with comments | « update_attempter.h ('k') | update_attempter_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698