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

Side by Side Diff: chrome/browser/sync_file_system/drive_backend/leveldb_wrapper.cc

Issue 466373004: [SyncFS] Introduce counters in LevelDBWrapper (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Work for nits Created 6 years, 4 months 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "chrome/browser/sync_file_system/drive_backend/leveldb_wrapper.h" 5 #include "chrome/browser/sync_file_system/drive_backend/leveldb_wrapper.h"
6 6
7 #include <map> 7 #include <map>
8 #include <set> 8 #include <set>
9 #include <string> 9 #include <string>
10 10
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 DCHECK(Valid()); 71 DCHECK(Valid());
72 72
73 const std::string key_str = key().ToString(); 73 const std::string key_str = key().ToString();
74 Transaction deletion(DELETE_OPERATION, std::string()); 74 Transaction deletion(DELETE_OPERATION, std::string());
75 map_iterator_ = db_->pending_.insert(map_iterator_, 75 map_iterator_ = db_->pending_.insert(map_iterator_,
76 std::make_pair(key_str, deletion)); 76 std::make_pair(key_str, deletion));
77 // In case that |db_->pending_| already had an entry for the key, we have to 77 // In case that |db_->pending_| already had an entry for the key, we have to
78 // update the value. 78 // update the value.
79 map_iterator_->second = deletion; 79 map_iterator_->second = deletion;
80 80
81 ++(db_->num_deletes_);
82
81 AdvanceIterators(); 83 AdvanceIterators();
82 } 84 }
83 85
84 leveldb::Slice LevelDBWrapper::Iterator::key() { 86 leveldb::Slice LevelDBWrapper::Iterator::key() {
85 DCHECK(Valid()); 87 DCHECK(Valid());
86 88
87 if (!db_iterator_->Valid()) 89 if (!db_iterator_->Valid())
88 return map_iterator_->first; 90 return map_iterator_->first;
89 if (map_iterator_ == db_->pending_.end()) 91 if (map_iterator_ == db_->pending_.end())
90 return db_iterator_->key(); 92 return db_iterator_->key();
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 137
136 while (map_iterator_ != db_->pending_.end() && 138 while (map_iterator_ != db_->pending_.end() &&
137 map_iterator_->second.first == DELETE_OPERATION) 139 map_iterator_->second.first == DELETE_OPERATION)
138 ++map_iterator_; 140 ++map_iterator_;
139 } 141 }
140 142
141 // --------------------------------------------------------------------------- 143 // ---------------------------------------------------------------------------
142 // LevelDBWrapper class 144 // LevelDBWrapper class
143 // --------------------------------------------------------------------------- 145 // ---------------------------------------------------------------------------
144 LevelDBWrapper::LevelDBWrapper(scoped_ptr<leveldb::DB> db) 146 LevelDBWrapper::LevelDBWrapper(scoped_ptr<leveldb::DB> db)
145 : db_(db.Pass()) { 147 : db_(db.Pass()), num_puts_(0), num_deletes_(0) {
146 DCHECK(db_); 148 DCHECK(db_);
147 } 149 }
148 150
149 LevelDBWrapper::~LevelDBWrapper() {} 151 LevelDBWrapper::~LevelDBWrapper() {}
150 152
151 void LevelDBWrapper::Put(const std::string& key, 153 void LevelDBWrapper::Put(const std::string& key, const std::string& value) {
152 const std::string& value) {
153 pending_[key] = Transaction(PUT_OPERATION, value); 154 pending_[key] = Transaction(PUT_OPERATION, value);
155 ++num_puts_;
154 } 156 }
155 157
156 void LevelDBWrapper::Delete(const std::string& key) { 158 void LevelDBWrapper::Delete(const std::string& key) {
157 pending_[key] = Transaction(DELETE_OPERATION, std::string()); 159 pending_[key] = Transaction(DELETE_OPERATION, std::string());
160 ++num_deletes_;
158 } 161 }
159 162
160 leveldb::Status LevelDBWrapper::Get(const std::string& key, 163 leveldb::Status LevelDBWrapper::Get(const std::string& key,
161 std::string* value) { 164 std::string* value) {
162 PendingOperationMap::iterator itr = pending_.find(key); 165 PendingOperationMap::iterator itr = pending_.find(key);
163 if (itr == pending_.end()) 166 if (itr == pending_.end())
164 return db_->Get(leveldb::ReadOptions(), key, value); 167 return db_->Get(leveldb::ReadOptions(), key, value);
165 168
166 const Transaction& transaction = itr->second; 169 const Transaction& transaction = itr->second;
167 switch (transaction.first) { 170 switch (transaction.first) {
(...skipping 30 matching lines...) Expand all
198 leveldb::Status status = db_->Write(leveldb::WriteOptions(), &batch); 201 leveldb::Status status = db_->Write(leveldb::WriteOptions(), &batch);
199 // TODO(peria): Decide what to do depending on |status|. 202 // TODO(peria): Decide what to do depending on |status|.
200 if (status.ok()) 203 if (status.ok())
201 Clear(); 204 Clear();
202 205
203 return status; 206 return status;
204 } 207 }
205 208
206 void LevelDBWrapper::Clear() { 209 void LevelDBWrapper::Clear() {
207 pending_.clear(); 210 pending_.clear();
211 num_puts_ = 0;
212 num_deletes_ = 0;
208 } 213 }
209 214
210 leveldb::DB* LevelDBWrapper::GetLevelDB() { 215 leveldb::DB* LevelDBWrapper::GetLevelDB() {
211 return db_.get(); 216 return db_.get();
212 } 217 }
213 218
214 } // namespace drive_backend 219 } // namespace drive_backend
215 } // namespace sync_file_system 220 } // namespace sync_file_system
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698