diff options
author | maxbogue <maxbogue@chromium.org> | 2016-02-17 13:08:30 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-02-17 21:10:06 +0000 |
commit | 8e0e9fe76dd49a8aa6d2db410e485a4265cc0d22 (patch) | |
tree | 6651e108c37ad6e90159835a99aa40bfdb72895b /sync/internal_api | |
parent | 2600fd7ce8de2bbb1ec1e02bbbb0558ff8d4782d (diff) | |
download | chromium_src-8e0e9fe76dd49a8aa6d2db410e485a4265cc0d22.zip chromium_src-8e0e9fe76dd49a8aa6d2db410e485a4265cc0d22.tar.gz chromium_src-8e0e9fe76dd49a8aa6d2db410e485a4265cc0d22.tar.bz2 |
[Sync] USS: Implement SimpleMetadataChangeList.
BUG=
Review URL: https://codereview.chromium.org/1691013002
Cr-Commit-Position: refs/heads/master@{#375978}
Diffstat (limited to 'sync/internal_api')
-rw-r--r-- | sync/internal_api/public/simple_metadata_change_list.cc | 28 | ||||
-rw-r--r-- | sync/internal_api/public/simple_metadata_change_list.h | 28 |
2 files changed, 48 insertions, 8 deletions
diff --git a/sync/internal_api/public/simple_metadata_change_list.cc b/sync/internal_api/public/simple_metadata_change_list.cc index 999eda6..e358dda 100644 --- a/sync/internal_api/public/simple_metadata_change_list.cc +++ b/sync/internal_api/public/simple_metadata_change_list.cc @@ -12,24 +12,38 @@ SimpleMetadataChangeList::~SimpleMetadataChangeList() {} void SimpleMetadataChangeList::UpdateDataTypeState( const sync_pb::DataTypeState& data_type_state) { - // TODO(skym): Implementation. + state_change_.reset(new DataTypeStateChange{UPDATE, data_type_state}); +} + +void SimpleMetadataChangeList::ClearDataTypeState() { + state_change_.reset(new DataTypeStateChange{CLEAR}); } void SimpleMetadataChangeList::UpdateMetadata( const std::string& client_tag, const sync_pb::EntityMetadata& metadata) { - // TODO(skym): Implementation. + metadata_changes_[client_tag] = {UPDATE, metadata}; } -void SimpleMetadataChangeList::ClearDataTypeState() { - // TODO(skym): Implementation. +void SimpleMetadataChangeList::ClearMetadata(const std::string& client_tag) { + metadata_changes_[client_tag] = {CLEAR, sync_pb::EntityMetadata()}; } -void SimpleMetadataChangeList::ClearMetadata(const std::string& client_tag) { - // TODO(skym): Implementation. +const SimpleMetadataChangeList::MetadataChanges& +SimpleMetadataChangeList::GetMetadataChanges() const { + return metadata_changes_; +} + +bool SimpleMetadataChangeList::HasDataTypeStateChange() const { + return state_change_.get() != nullptr; +} + +const SimpleMetadataChangeList::DataTypeStateChange& +SimpleMetadataChangeList::GetDataTypeStateChange() const { + return *state_change_.get(); } -void SimpleMetadataChangeList::TranfserChanges( +void SimpleMetadataChangeList::TransferChanges( ModelTypeStore* store, ModelTypeStore::WriteBatch* write_batch) { // TODO(skym): Implementation. diff --git a/sync/internal_api/public/simple_metadata_change_list.h b/sync/internal_api/public/simple_metadata_change_list.h index f302b12..9daaee4 100644 --- a/sync/internal_api/public/simple_metadata_change_list.h +++ b/sync/internal_api/public/simple_metadata_change_list.h @@ -5,11 +5,15 @@ #ifndef SYNC_INTERNAL_API_PUBLIC_SIMPLE_METADATA_CHANGE_LIST_H_ #define SYNC_INTERNAL_API_PUBLIC_SIMPLE_METADATA_CHANGE_LIST_H_ +#include <map> #include <string> #include "sync/api/metadata_change_list.h" #include "sync/api/model_type_store.h" #include "sync/base/sync_export.h" +#include "sync/internal_api/public/non_blocking_sync_common.h" +#include "sync/protocol/data_type_state.pb.h" +#include "sync/protocol/entity_metadata.pb.h" namespace syncer_v2 { @@ -18,6 +22,20 @@ namespace syncer_v2 { // requested transfers them to the store/write batch. class SYNC_EXPORT SimpleMetadataChangeList : public MetadataChangeList { public: + enum ChangeType { UPDATE, CLEAR }; + + struct MetadataChange { + ChangeType type; + sync_pb::EntityMetadata metadata; + }; + + struct DataTypeStateChange { + ChangeType type; + sync_pb::DataTypeState state; + }; + + typedef std::map<std::string, MetadataChange> MetadataChanges; + SimpleMetadataChangeList(); ~SimpleMetadataChangeList() override; @@ -28,11 +46,19 @@ class SYNC_EXPORT SimpleMetadataChangeList : public MetadataChangeList { const sync_pb::EntityMetadata& metadata) override; void ClearMetadata(const std::string& client_tag) override; + const MetadataChanges& GetMetadataChanges() const; + bool HasDataTypeStateChange() const; + const DataTypeStateChange& GetDataTypeStateChange() const; + // Moves all currently accumulated changes into the write batch, clear out // local copies. Calling this multiple times will work, but should not be // necessary. - void TranfserChanges(ModelTypeStore* store, + void TransferChanges(ModelTypeStore* store, ModelTypeStore::WriteBatch* write_batch); + + private: + MetadataChanges metadata_changes_; + scoped_ptr<DataTypeStateChange> state_change_; }; } // namespace syncer_v2 |