| // Copyright 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. |
| |
| #ifndef SYNC_API_SYNC_MERGE_RESULT_H_ |
| #define SYNC_API_SYNC_MERGE_RESULT_H_ |
| |
| #include "sync/api/sync_error.h" |
| #include "sync/base/sync_export.h" |
| #include "sync/internal_api/public/base/model_type.h" |
| |
| namespace syncer { |
| |
| // A model-type-specific view of a sync merge. This class encapsulates the |
| // state before and after the merge as well as the deltas and any error that |
| // occurred. |
| // Note: This class only tracks one side of the merge. In other words, if built |
| // by the local SyncableService, all values correspond to the local state before |
| // and after merging, and the delta's applied to that state. Sync's change |
| // processor will create a separate merge result. |
| class SYNC_EXPORT SyncMergeResult { |
| public: |
| // Initialize an empty merge result for model type |type|. |
| explicit SyncMergeResult(ModelType type); |
| ~SyncMergeResult(); |
| |
| // Default copy and assign welcome. |
| |
| // Setters. |
| // Note: if |error.IsSet()| is true, |error.type()| must match model_type_ |
| void set_error(SyncError error); |
| void set_num_items_before_association(int num_items_before_association); |
| void set_num_items_after_association(int num_items_after_association); |
| void set_num_items_added(int num_items_added); |
| void set_num_items_deleted(int num_items_deleted); |
| void set_num_items_modified(int num_items_modified); |
| void set_pre_association_version(int64 version); |
| |
| // Getters. |
| ModelType model_type() const; |
| SyncError error() const; |
| int num_items_before_association() const; |
| int num_items_after_association() const; |
| int num_items_added() const; |
| int num_items_deleted() const; |
| int num_items_modified() const; |
| int64 pre_association_version() const; |
| |
| private: |
| // Make |this| into a copy of |other|. |
| void CopyFrom(const SyncMergeResult& other); |
| |
| // The datatype that was associated. |
| ModelType model_type_; |
| |
| // The error encountered during association. Unset if no error was |
| // encountered. |
| SyncError error_; |
| |
| // The state of the world before association. |
| int num_items_before_association_; |
| |
| // The state of the world after association. |
| int num_items_after_association_; |
| |
| // The changes that took place during association. In a correctly working |
| // system these should be the deltas between before and after. |
| int num_items_added_; |
| int num_items_deleted_; |
| int num_items_modified_; |
| |
| // Version of model before association. |
| int64 pre_association_version_; |
| }; |
| |
| } // namespace syncer |
| |
| #endif // SYNC_API_SYNC_MERGE_RESULT_H_ |