1 // Copyright 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef SYNC_SESSIONS_MODEL_NEUTRAL_STATE_H 6 #define SYNC_SESSIONS_MODEL_NEUTRAL_STATE_H 7 8 #include "base/basictypes.h" 9 #include "sync/base/sync_export.h" 10 #include "sync/internal_api/public/util/syncer_error.h" 11 #include "sync/protocol/sync.pb.h" 12 #include "sync/protocol/sync_protocol_error.h" 13 14 namespace syncer { 15 namespace sessions { 16 17 // Grouping of all state that applies to all model types. Note that some 18 // components of the global grouping can internally implement finer grained 19 // scope control, but the top level entity is still a singleton with respect to 20 // model types. 21 struct SYNC_EXPORT ModelNeutralState { 22 ModelNeutralState(); 23 ~ModelNeutralState(); 24 25 // The set of types for which commits were sent to the server. 26 ModelTypeSet commit_request_types; 27 28 int num_successful_commits; 29 30 // This is needed for monitoring extensions activity. 31 int num_successful_bookmark_commits; 32 33 // Download event counters. 34 int num_updates_downloaded_total; 35 int num_tombstone_updates_downloaded_total; 36 int num_reflected_updates_downloaded_total; 37 38 // If the syncer encountered a MIGRATION_DONE code, these are the types that 39 // the client must now "migrate", by purging and re-downloading all updates. 40 ModelTypeSet types_needing_local_migration; 41 42 // Update application and conflicts. 43 int num_updates_applied; 44 int num_encryption_conflicts; 45 int num_server_conflicts; 46 int num_hierarchy_conflicts; 47 48 // Overwrites due to conflict resolution counters. 49 int num_local_overwrites; 50 int num_server_overwrites; 51 52 // Any protocol errors that we received during this sync session. 53 SyncProtocolError sync_protocol_error; 54 55 // Records the most recent results of GetKey, PostCommit and GetUpdates 56 // commands. 57 SyncerError last_get_key_result; 58 SyncerError last_download_updates_result; 59 SyncerError commit_result; 60 61 // Set to true by PostCommitMessageCommand if any commits were successful. 62 bool items_committed; 63 64 // Number of changes remaining, according to the server. 65 // Take it as an estimate unless it's value is zero, in which case there 66 // really is nothing more to download. 67 int64 num_server_changes_remaining; 68 }; 69 70 bool HasSyncerError(const ModelNeutralState& state); 71 72 } // namespace sessions 73 } // namespace syncer 74 75 #endif // SYNC_SESSIONS_MODEL_NEUTRAL_STATE_H_ 76