diff options
author | dcheng@chromium.org <dcheng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-05 05:31:12 +0000 |
---|---|---|
committer | dcheng@chromium.org <dcheng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-05 05:31:12 +0000 |
commit | 0e7f2b7f4023f10cc1d4d4a9eabca701faedec01 (patch) | |
tree | 5eed13dfa3d07adf11853b833434fa785ee34776 /sync/notifier/fake_invalidation_state_tracker.cc | |
parent | 5fbd63798b997475fded3cc90f456425c607edcd (diff) | |
download | chromium_src-0e7f2b7f4023f10cc1d4d4a9eabca701faedec01.zip chromium_src-0e7f2b7f4023f10cc1d4d4a9eabca701faedec01.tar.gz chromium_src-0e7f2b7f4023f10cc1d4d4a9eabca701faedec01.tar.bz2 |
Implement features needed for local ack handling in InvalidationStateTracker.
Adds the ability to save payloads in InvalidationStateTracker, and also adds
the functionality to generate, track, and acknowledge local ack handles.
BUG=124149
Review URL: https://codereview.chromium.org/11415049
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@171165 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'sync/notifier/fake_invalidation_state_tracker.cc')
-rw-r--r-- | sync/notifier/fake_invalidation_state_tracker.cc | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/sync/notifier/fake_invalidation_state_tracker.cc b/sync/notifier/fake_invalidation_state_tracker.cc index 9073e45b..2af5db5 100644 --- a/sync/notifier/fake_invalidation_state_tracker.cc +++ b/sync/notifier/fake_invalidation_state_tracker.cc @@ -4,6 +4,10 @@ #include "sync/notifier/fake_invalidation_state_tracker.h" +#include "base/bind.h" +#include "base/callback.h" +#include "base/location.h" +#include "base/task_runner.h" #include "testing/gtest/include/gtest/gtest.h" namespace syncer { @@ -25,8 +29,10 @@ FakeInvalidationStateTracker::GetAllInvalidationStates() const { return state_map_; } -void FakeInvalidationStateTracker::SetMaxVersion( - const invalidation::ObjectId& id, int64 max_version) { +void FakeInvalidationStateTracker::SetMaxVersionAndPayload( + const invalidation::ObjectId& id, + int64 max_version, + const std::string& payload) { InvalidationStateMap::const_iterator it = state_map_.find(id); if ((it != state_map_.end()) && (max_version <= it->second.version)) { ADD_FAILURE(); @@ -50,4 +56,25 @@ std::string FakeInvalidationStateTracker::GetBootstrapData() const { return bootstrap_data_; } +void FakeInvalidationStateTracker::GenerateAckHandles( + const ObjectIdSet& ids, + const scoped_refptr<base::TaskRunner>& task_runner, + base::Callback<void(const AckHandleMap&)> callback) { + AckHandleMap ack_handles; + for (ObjectIdSet::const_iterator it = ids.begin(); it != ids.end(); ++it) { + state_map_[*it].expected = AckHandle::CreateUnique(); + ack_handles.insert(std::make_pair(*it, state_map_[*it].expected)); + } + if (!task_runner->PostTask(FROM_HERE, base::Bind(callback, ack_handles))) + ADD_FAILURE(); +} + +void FakeInvalidationStateTracker::Acknowledge(const invalidation::ObjectId& id, + const AckHandle& ack_handle) { + InvalidationStateMap::iterator it = state_map_.find(id); + if (it == state_map_.end()) + ADD_FAILURE(); + it->second.current = ack_handle; +} + } // namespace syncer |