Index: sync/engine/sync_session_job.cc |
=================================================================== |
--- sync/engine/sync_session_job.cc (revision 164641) |
+++ sync/engine/sync_session_job.cc (working copy) |
@@ -1,184 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "sync/engine/sync_session_job.h" |
-#include "sync/internal_api/public/sessions/model_neutral_state.h" |
- |
-namespace syncer { |
- |
-SyncSessionJob::~SyncSessionJob() {} |
- |
-SyncSessionJob::SyncSessionJob( |
- Purpose purpose, |
- base::TimeTicks start, |
- scoped_ptr<sessions::SyncSession> session, |
- const ConfigurationParams& config_params, |
- const tracked_objects::Location& from_location) |
- : purpose_(purpose), |
- scheduled_start_(start), |
- session_(session.Pass()), |
- is_canary_(false), |
- config_params_(config_params), |
- finished_(NOT_FINISHED), |
- from_location_(from_location) { |
-} |
- |
-#define ENUM_CASE(x) case x: return #x; break; |
-const char* SyncSessionJob::GetPurposeString(SyncSessionJob::Purpose purpose) { |
- switch (purpose) { |
- ENUM_CASE(UNKNOWN); |
- ENUM_CASE(POLL); |
- ENUM_CASE(NUDGE); |
- ENUM_CASE(CONFIGURATION); |
- } |
- NOTREACHED(); |
- return ""; |
-} |
-#undef ENUM_CASE |
- |
-bool SyncSessionJob::Finish(bool early_exit) { |
- DCHECK_EQ(finished_, NOT_FINISHED); |
- // Did we run through all SyncerSteps from start_step() to end_step() |
- // until the SyncSession returned !HasMoreToSync()? |
- // Note: if not, it's possible the scheduler hasn't started with |
- // SyncShare yet, it's possible there is still more to sync in the session, |
- // and it's also possible the job quit part way through due to a premature |
- // exit condition (such as shutdown). |
- finished_ = early_exit ? EARLY_EXIT : FINISHED; |
- |
- if (early_exit) |
- return false; |
- |
- DCHECK(!session_->HasMoreToSync()); |
- |
- // Did we hit any errors along the way? |
- if (sessions::HasSyncerError( |
- session_->status_controller().model_neutral_state())) { |
- return false; |
- } |
- |
- const sessions::ModelNeutralState& state( |
- session_->status_controller().model_neutral_state()); |
- switch (purpose_) { |
- case POLL: |
- case NUDGE: |
- DCHECK_NE(state.last_download_updates_result, UNSET); |
- DCHECK_NE(state.commit_result, UNSET); |
- break; |
- case CONFIGURATION: |
- DCHECK_NE(state.last_download_updates_result, UNSET); |
- break; |
- case UNKNOWN: |
- default: |
- NOTREACHED(); |
- } |
- |
- if (!config_params_.ready_task.is_null()) |
- config_params_.ready_task.Run(); |
- return true; |
-} |
- |
-scoped_ptr<SyncSessionJob> SyncSessionJob::CloneAndAbandon() { |
- DCHECK_EQ(finished_, NOT_FINISHED); |
- // Clone |this|, and abandon it by NULL-ing session_. |
- return scoped_ptr<SyncSessionJob> (new SyncSessionJob( |
- purpose_, scheduled_start_, session_.Pass(), |
- config_params_, from_location_)); |
-} |
- |
-scoped_ptr<SyncSessionJob> SyncSessionJob::Clone() const { |
- DCHECK_GT(finished_, NOT_FINISHED); |
- return scoped_ptr<SyncSessionJob>(new SyncSessionJob( |
- purpose_, scheduled_start_, CloneSession().Pass(), |
- config_params_, from_location_)); |
-} |
- |
-scoped_ptr<SyncSessionJob> SyncSessionJob::CloneFromLocation( |
- const tracked_objects::Location& from_here) const { |
- DCHECK_GT(finished_, NOT_FINISHED); |
- return scoped_ptr<SyncSessionJob>(new SyncSessionJob( |
- purpose_, scheduled_start_, CloneSession().Pass(), |
- config_params_, from_here)); |
-} |
- |
-scoped_ptr<sessions::SyncSession> SyncSessionJob::CloneSession() const { |
- return scoped_ptr<sessions::SyncSession>( |
- new sessions::SyncSession(session_->context(), |
- session_->delegate(), session_->source(), session_->routing_info(), |
- session_->workers())); |
-} |
- |
-bool SyncSessionJob::is_canary() const { |
- return is_canary_; |
-} |
- |
-SyncSessionJob::Purpose SyncSessionJob::purpose() const { |
- return purpose_; |
-} |
- |
-base::TimeTicks SyncSessionJob::scheduled_start() const { |
- return scheduled_start_; |
-} |
- |
-void SyncSessionJob::set_scheduled_start(base::TimeTicks start) { |
- scheduled_start_ = start; |
-}; |
- |
-const sessions::SyncSession* SyncSessionJob::session() const { |
- return session_.get(); |
-} |
- |
-sessions::SyncSession* SyncSessionJob::mutable_session() { |
- return session_.get(); |
-} |
- |
-const tracked_objects::Location& SyncSessionJob::from_location() const { |
- return from_location_; |
-} |
- |
-ConfigurationParams SyncSessionJob::config_params() const { |
- return config_params_; |
-} |
- |
-void SyncSessionJob::GrantCanaryPrivilege() { |
- DCHECK_EQ(finished_, NOT_FINISHED); |
- DVLOG(2) << "Granting canary priviliege to " << session_.get(); |
- is_canary_ = true; |
-} |
- |
-SyncerStep SyncSessionJob::start_step() const { |
- SyncerStep start, end; |
- GetSyncerStepsForPurpose(purpose_, &start, &end); |
- return start; |
-} |
- |
-SyncerStep SyncSessionJob::end_step() const { |
- SyncerStep start, end; |
- GetSyncerStepsForPurpose(purpose_, &start, &end); |
- return end; |
-} |
- |
-// static |
-void SyncSessionJob::GetSyncerStepsForPurpose(Purpose purpose, |
- SyncerStep* start, |
- SyncerStep* end) { |
- switch (purpose) { |
- case SyncSessionJob::CONFIGURATION: |
- *start = DOWNLOAD_UPDATES; |
- *end = APPLY_UPDATES; |
- return; |
- case SyncSessionJob::NUDGE: |
- case SyncSessionJob::POLL: |
- *start = SYNCER_BEGIN; |
- *end = SYNCER_END; |
- return; |
- default: |
- NOTREACHED(); |
- *start = SYNCER_END; |
- *end = SYNCER_END; |
- return; |
- } |
-} |
- |
-} // namespace syncer |