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

Unified Diff: chrome/browser/sync/engine/syncer_session.h

Issue 386030: Relieve SyncerSession,SyncCycleState, SyncProcessState, SyncerSession, Syncer... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 1 month 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/sync/engine/syncer_proto_util.cc ('k') | chrome/browser/sync/engine/syncer_status.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/sync/engine/syncer_session.h
===================================================================
--- chrome/browser/sync/engine/syncer_session.h (revision 32731)
+++ chrome/browser/sync/engine/syncer_session.h (working copy)
@@ -1,354 +0,0 @@
-// Copyright (c) 2009 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.
-//
-// SyncerSession holds the entire state of a single sync cycle; GetUpdates,
-// Commit, and Conflict Resolution. After said cycle, the Session may contain
-// items that were unable to be processed because of errors.
-//
-// THIS CLASS PROVIDES NO SYNCHRONIZATION GUARANTEES.
-
-#ifndef CHROME_BROWSER_SYNC_ENGINE_SYNCER_SESSION_H_
-#define CHROME_BROWSER_SYNC_ENGINE_SYNCER_SESSION_H_
-
-#include <string>
-#include <utility>
-#include <vector>
-
-#include "base/time.h"
-#include "chrome/browser/sync/engine/net/server_connection_manager.h"
-#include "chrome/browser/sync/engine/sync_cycle_state.h"
-#include "chrome/browser/sync/engine/sync_process_state.h"
-#include "chrome/browser/sync/engine/syncer_status.h"
-#include "chrome/browser/sync/engine/syncer_types.h"
-#include "chrome/browser/sync/engine/syncproto.h"
-#include "chrome/browser/sync/util/event_sys.h"
-#include "chrome/browser/sync/util/extensions_activity_monitor.h"
-#include "chrome/browser/sync/util/sync_types.h"
-#include "testing/gtest/include/gtest/gtest_prod.h" // For FRIEND_TEST
-
-namespace browser_sync {
-
-class ConflictResolver;
-class ModelSafeWorker;
-class ServerConnectionManager;
-class SyncerStatus;
-struct SyncerEvent;
-
-class SyncerSession {
- friend class ConflictResolutionView;
- friend class SyncerStatus;
- public:
- // A utility to set the session's write transaction member, and later clear
- // it when it the utility falls out of scope.
- class ScopedSetWriteTransaction {
- public:
- ScopedSetWriteTransaction(SyncerSession* session,
- syncable::WriteTransaction* trans)
- : session_(session) {
- session_->set_write_transaction(trans);
- }
- ~ScopedSetWriteTransaction() {
- session_->ClearWriteTransaction();
- }
- private:
- SyncerSession* session_;
- DISALLOW_COPY_AND_ASSIGN(ScopedSetWriteTransaction);
- };
-
- SyncerSession(SyncCycleState* cycle_state, SyncProcessState* process_state)
- : sync_process_state_(process_state),
- sync_cycle_state_(cycle_state),
- source_(sync_pb::GetUpdatesCallerInfo::UNKNOWN),
- notifications_enabled_(false) {
- DCHECK(NULL != process_state);
- DCHECK(NULL != cycle_state);
- }
-
- // Perhaps this should dictate the next step. (ie, don't do apply if you
- // didn't get any from download). or put it in the while loop.
- void set_update_response(const ClientToServerResponse& update_response) {
- sync_cycle_state_->set_update_response(update_response);
- }
-
- const ClientToServerResponse& update_response() const {
- return sync_cycle_state_->update_response();
- }
-
- void set_commit_response(const ClientToServerResponse& commit_response) {
- sync_cycle_state_->set_commit_response(commit_response);
- }
-
- const ClientToServerResponse& commit_response() const {
- return sync_cycle_state_->commit_response();
- }
-
- void AddVerifyResult(const VerifyResult& verify_result,
- const sync_pb::SyncEntity& entity) {
- sync_cycle_state_->AddVerifyResult(verify_result, entity);
- }
-
- bool HasVerifiedUpdates() const {
- return sync_cycle_state_->HasVerifiedUpdates();
- }
-
- void AddAppliedUpdate(const UpdateAttemptResponse& response,
- const syncable::Id& id) {
- sync_cycle_state_->AddAppliedUpdate(response, id);
- }
-
- bool HasAppliedUpdates() const {
- return sync_cycle_state_->HasAppliedUpdates();
- }
-
- std::string account_name() const {
- return sync_process_state_->account_name();
- }
-
- syncable::DirectoryManager* dirman() const {
- return sync_process_state_->dirman();
- }
-
- ServerConnectionManager* connection_manager() const {
- return sync_process_state_->connection_manager();
- }
-
- ConflictResolver* resolver() const {
- return sync_process_state_->resolver();
- }
-
- SyncerEventChannel* syncer_event_channel() const {
- return sync_process_state_->syncer_event_channel();
- }
-
- int conflicting_update_count() const {
- return sync_process_state_->conflicting_updates();
- }
-
- base::TimeTicks silenced_until() const {
- return sync_process_state_->silenced_until();
- }
-
- void set_silenced_until(base::TimeTicks silenced_until) const {
- sync_process_state_->set_silenced_until(silenced_until);
- }
-
- const std::vector<int64>& unsynced_handles() const {
- return sync_cycle_state_->unsynced_handles();
- }
-
- void set_unsynced_handles(const std::vector<int64>& unsynced_handles) {
- sync_cycle_state_->set_unsynced_handles(unsynced_handles);
- }
-
- int64 unsynced_count() const { return sync_cycle_state_->unsynced_count(); }
-
- const std::vector<syncable::Id>& commit_ids() const {
- return sync_cycle_state_->commit_ids();
- }
-
- void set_commit_ids(const std::vector<syncable::Id>& commit_ids) {
- sync_cycle_state_->set_commit_ids(commit_ids);
- }
-
- bool commit_ids_empty() const {
- return sync_cycle_state_->commit_ids_empty();
- }
-
- bool HadSuccessfulCommits() const {
- return sync_process_state_->successful_commits() > 0;
- }
-
- syncable::WriteTransaction* write_transaction() const {
- return sync_cycle_state_->write_transaction();
- }
-
- bool has_open_write_transaction() const {
- return sync_cycle_state_->has_open_write_transaction();
- }
-
- ClientToServerMessage* commit_message() const {
- return sync_cycle_state_->commit_message();
- }
-
- void set_commit_message(const ClientToServerMessage& message) {
- sync_cycle_state_->set_commit_message(message);
- }
-
- bool HasRemainingItemsToCommit() const {
- return commit_ids().size() < unsynced_handles().size();
- }
-
- void AddCommitConflict(const syncable::Id& the_id) {
- sync_process_state_->AddConflictingItem(the_id);
- }
-
- void EraseCommitConflict(const syncable::Id& the_id) {
- sync_process_state_->EraseConflictingItem(the_id);
- }
-
- // Returns true if at least one update application failed due to a conflict
- // during this sync cycle.
- bool HasConflictingUpdates() const {
- std::vector<AppliedUpdate>::const_iterator it;
- for (it = sync_cycle_state_->AppliedUpdatesBegin();
- it < sync_cycle_state_->AppliedUpdatesEnd();
- ++it) {
- if (it->first == CONFLICT) {
- return true;
- }
- }
- return false;
- }
-
- std::vector<VerifiedUpdate>::iterator VerifiedUpdatesBegin() const {
- return sync_cycle_state_->VerifiedUpdatesBegin();
- }
-
- std::vector<VerifiedUpdate>::iterator VerifiedUpdatesEnd() const {
- return sync_cycle_state_->VerifiedUpdatesEnd();
- }
-
- // Returns the number of updates received from the sync server.
- int64 CountUpdates() const {
- if (update_response().has_get_updates()) {
- return update_response().get_updates().entries().size();
- } else {
- return 0;
- }
- }
-
- bool got_zero_updates() const {
- return CountUpdates() == 0;
- }
-
- void DumpSessionInfo() const {
- LOG(INFO) << "Dumping session info";
- if (update_response().has_get_updates()) {
- LOG(INFO) << update_response().get_updates().entries().size()
- << " updates downloaded by last get_updates";
- } else {
- LOG(INFO) << "No update response found";
- }
- LOG(INFO) << sync_cycle_state_->VerifiedUpdatesSize()
- << " updates verified";
- LOG(INFO) << sync_cycle_state_->AppliedUpdatesSize() << " updates applied";
- LOG(INFO) << commit_ids().size() << " items to commit";
- LOG(INFO) << unsynced_count() << " unsynced items";
- }
-
- void set_conflict_sets_built(const bool b) {
- sync_cycle_state_->set_conflict_sets_built(b);
- }
-
- bool conflict_sets_built() const {
- return sync_cycle_state_->conflict_sets_built();
- }
-
- void set_conflicts_resolved(const bool b) {
- sync_cycle_state_->set_conflicts_resolved(b);
- }
-
- bool conflicts_resolved() const {
- return sync_cycle_state_->conflicts_resolved();
- }
-
- ModelSafeWorker* model_safe_worker() const {
- return sync_process_state_->model_safe_worker();
- }
-
- void set_item_committed() {
- sync_cycle_state_->set_item_committed();
- }
-
- bool items_committed() const {
- return sync_cycle_state_->items_committed();
- }
-
- void set_over_quota(const bool b) {
- sync_cycle_state_->set_over_quota(b);
- }
-
- // Volitile reader for the source member of the syncer session object. The
- // value is set to the SYNC_CYCLE_CONTINUATION value to signal that it has
- // been read.
- sync_pb::GetUpdatesCallerInfo::GET_UPDATES_SOURCE TestAndSetSource() {
- sync_pb::GetUpdatesCallerInfo::GET_UPDATES_SOURCE old_source =
- source_;
- set_source(sync_pb::GetUpdatesCallerInfo::SYNC_CYCLE_CONTINUATION);
- return old_source;
- }
-
- void set_source(sync_pb::GetUpdatesCallerInfo::GET_UPDATES_SOURCE source) {
- source_ = source;
- }
-
- const ExtensionsActivityMonitor::Records& extensions_activity() const {
- return extensions_activity_;
- }
-
- ExtensionsActivityMonitor::Records* mutable_extensions_activity() {
- return &extensions_activity_;
- }
-
- bool notifications_enabled() const {
- return notifications_enabled_;
- }
-
- void set_notifications_enabled(const bool state) {
- notifications_enabled_ = state;
- }
-
- void set_timestamp_dirty() {
- sync_cycle_state_->set_timestamp_dirty();
- }
-
- bool timestamp_dirty() const {
- return sync_cycle_state_->is_timestamp_dirty();
- }
-
- // TODO(chron): Unit test for this method.
- // returns true iff this session contains data that should go through the
- // sync engine again.
- bool HasMoreToSync() const {
- return (HasRemainingItemsToCommit() &&
- sync_process_state_->successful_commits() > 0) ||
- conflict_sets_built() ||
- conflicts_resolved() ||
- // Or, we have conflicting updates, but we're making progress on
- // resolving them...
- !got_zero_updates() ||
- timestamp_dirty();
- }
-
- private:
- // The write transaction must be destructed by the caller of this function.
- // Here, we just clear the reference.
- void set_write_transaction(syncable::WriteTransaction* write_transaction) {
- sync_cycle_state_->set_write_transaction(write_transaction);
- }
-
- // Sets the write transaction to null, but doesn't free the memory.
- void ClearWriteTransaction() {
- sync_cycle_state_->ClearWriteTransaction();
- }
-
- SyncProcessState* sync_process_state_;
- SyncCycleState* sync_cycle_state_;
-
- // The source for initiating this syncer session.
- sync_pb::GetUpdatesCallerInfo::GET_UPDATES_SOURCE source_;
-
- // Information about extensions activity since the last successful commit.
- ExtensionsActivityMonitor::Records extensions_activity_;
-
- // True if notifications are enabled when this session was created.
- bool notifications_enabled_;
-
- FRIEND_TEST(SyncerTest, TestCommitListOrderingCounterexample);
- DISALLOW_COPY_AND_ASSIGN(SyncerSession);
-};
-
-} // namespace browser_sync
-
-#endif // CHROME_BROWSER_SYNC_ENGINE_SYNCER_SESSION_H_
« no previous file with comments | « chrome/browser/sync/engine/syncer_proto_util.cc ('k') | chrome/browser/sync/engine/syncer_status.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698