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

Side by Side Diff: components/offline_pages/background/request_queue_in_memory_store.cc

Issue 2473553004: Request Picker task (Closed)
Patch Set: CR fixes per DougArnett Created 4 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/offline_pages/background/request_queue_in_memory_store.h" 5 #include "components/offline_pages/background/request_queue_in_memory_store.h"
6 6
7 #include <unordered_set> 7 #include <unordered_set>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/location.h" 10 #include "base/location.h"
(...skipping 15 matching lines...) Expand all
26 result_requests.push_back(std::move(request)); 26 result_requests.push_back(std::move(request));
27 } 27 }
28 base::ThreadTaskRunnerHandle::Get()->PostTask( 28 base::ThreadTaskRunnerHandle::Get()->PostTask(
29 FROM_HERE, 29 FROM_HERE,
30 base::Bind(callback, true, base::Passed(std::move(result_requests)))); 30 base::Bind(callback, true, base::Passed(std::move(result_requests))));
31 } 31 }
32 32
33 void RequestQueueInMemoryStore::GetRequestsByIds( 33 void RequestQueueInMemoryStore::GetRequestsByIds(
34 const std::vector<int64_t>& request_ids, 34 const std::vector<int64_t>& request_ids,
35 const UpdateCallback& callback) { 35 const UpdateCallback& callback) {
36 std::unique_ptr<UpdateRequestsResult> result( 36 std::unique_ptr<QueueResults::UpdateRequestsResult> result(
37 new UpdateRequestsResult(state())); 37 new QueueResults::UpdateRequestsResult(state()));
38 38
39 ItemActionStatus status; 39 ItemActionStatus status;
40 // Make sure not to include the same request multiple times, while preserving 40 // Make sure not to include the same request multiple times, while preserving
41 // the order of non-duplicated IDs in the result. 41 // the order of non-duplicated IDs in the result.
42 std::unordered_set<int64_t> processed_ids; 42 std::unordered_set<int64_t> processed_ids;
43 for (const auto& request_id : request_ids) { 43 for (const auto& request_id : request_ids) {
44 if (!processed_ids.insert(request_id).second) 44 if (!processed_ids.insert(request_id).second)
45 continue; 45 continue;
46 RequestsMap::iterator iter = requests_.find(request_id); 46 RequestsMap::iterator iter = requests_.find(request_id);
47 if (iter != requests_.end()) { 47 if (iter != requests_.end()) {
(...skipping 20 matching lines...) Expand all
68 status = ItemActionStatus::ALREADY_EXISTS; 68 status = ItemActionStatus::ALREADY_EXISTS;
69 } 69 }
70 70
71 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, 71 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
72 base::Bind(callback, status)); 72 base::Bind(callback, status));
73 } 73 }
74 74
75 void RequestQueueInMemoryStore::UpdateRequests( 75 void RequestQueueInMemoryStore::UpdateRequests(
76 const std::vector<SavePageRequest>& requests, 76 const std::vector<SavePageRequest>& requests,
77 const RequestQueue::UpdateCallback& callback) { 77 const RequestQueue::UpdateCallback& callback) {
78 std::unique_ptr<UpdateRequestsResult> result( 78 std::unique_ptr<QueueResults::UpdateRequestsResult> result(
79 new UpdateRequestsResult(state())); 79 new QueueResults::UpdateRequestsResult(state()));
80 80
81 ItemActionStatus status; 81 ItemActionStatus status;
82 for (const auto& request : requests) { 82 for (const auto& request : requests) {
83 RequestsMap::iterator iter = requests_.find(request.request_id()); 83 RequestsMap::iterator iter = requests_.find(request.request_id());
84 if (iter != requests_.end()) { 84 if (iter != requests_.end()) {
85 status = ItemActionStatus::SUCCESS; 85 status = ItemActionStatus::SUCCESS;
86 iter->second = request; 86 iter->second = request;
87 result->updated_items.push_back(request); 87 result->updated_items.push_back(request);
88 } else { 88 } else {
89 status = ItemActionStatus::NOT_FOUND; 89 status = ItemActionStatus::NOT_FOUND;
90 } 90 }
91 result->item_statuses.push_back( 91 result->item_statuses.push_back(
92 std::make_pair(request.request_id(), status)); 92 std::make_pair(request.request_id(), status));
93 } 93 }
94 94
95 base::ThreadTaskRunnerHandle::Get()->PostTask( 95 base::ThreadTaskRunnerHandle::Get()->PostTask(
96 FROM_HERE, base::Bind(callback, base::Passed(&result))); 96 FROM_HERE, base::Bind(callback, base::Passed(&result)));
97 } 97 }
98 98
99 void RequestQueueInMemoryStore::RemoveRequests( 99 void RequestQueueInMemoryStore::RemoveRequests(
100 const std::vector<int64_t>& request_ids, 100 const std::vector<int64_t>& request_ids,
101 const UpdateCallback& callback) { 101 const UpdateCallback& callback) {
102 std::unique_ptr<UpdateRequestsResult> result( 102 std::unique_ptr<QueueResults::UpdateRequestsResult> result(
103 new UpdateRequestsResult(StoreState::LOADED)); 103 new QueueResults::UpdateRequestsResult(StoreState::LOADED));
104 104
105 ItemActionStatus status; 105 ItemActionStatus status;
106 // If we find a request, mark it as succeeded, and put it in the request list. 106 // If we find a request, mark it as succeeded, and put it in the request list.
107 // Otherwise mark it as failed. 107 // Otherwise mark it as failed.
108 for (auto request_id : request_ids) { 108 for (auto request_id : request_ids) {
109 RequestsMap::iterator iter = requests_.find(request_id); 109 RequestsMap::iterator iter = requests_.find(request_id);
110 if (iter != requests_.end()) { 110 if (iter != requests_.end()) {
111 status = ItemActionStatus::SUCCESS; 111 status = ItemActionStatus::SUCCESS;
112 result->updated_items.push_back(iter->second); 112 result->updated_items.push_back(iter->second);
113 requests_.erase(iter); 113 requests_.erase(iter);
(...skipping 11 matching lines...) Expand all
125 requests_.clear(); 125 requests_.clear();
126 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, 126 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
127 base::Bind(callback, true)); 127 base::Bind(callback, true));
128 } 128 }
129 129
130 StoreState RequestQueueInMemoryStore::state() const { 130 StoreState RequestQueueInMemoryStore::state() const {
131 return StoreState::LOADED; 131 return StoreState::LOADED;
132 } 132 }
133 133
134 } // namespace offline_pages 134 } // namespace offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698