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

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

Issue 461823002: [SyncFS] Support Delete operation on LevelDBWrapper::Iterator (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Work for a nit 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 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 db_iterator_->Next(); 60 db_iterator_->Next();
61 if (comp >= 0) 61 if (comp >= 0)
62 ++map_iterator_; 62 ++map_iterator_;
63 } else { 63 } else {
64 ++map_iterator_; 64 ++map_iterator_;
65 } 65 }
66 66
67 AdvanceIterators(); 67 AdvanceIterators();
68 } 68 }
69 69
70 void LevelDBWrapper::Iterator::Delete() {
71 DCHECK(Valid());
72
73 const std::string key_str = key().ToString();
74 if (map_iterator_ != db_->pending_.end() && map_iterator_->first == key_str)
75 db_->pending_.erase(map_iterator_);
76 map_iterator_ = db_->pending_.insert(
77 std::make_pair(key_str,
78 Transaction(DELETE_OPERATION, std::string()))).first;
tzik 2014/08/12 05:56:46 Since we already have the right place to insert, h
peria 2014/08/12 06:04:34 Done.
79 AdvanceIterators();
80 }
81
70 leveldb::Slice LevelDBWrapper::Iterator::key() { 82 leveldb::Slice LevelDBWrapper::Iterator::key() {
71 DCHECK(Valid()); 83 DCHECK(Valid());
72 84
73 if (!db_iterator_->Valid()) 85 if (!db_iterator_->Valid())
74 return map_iterator_->first; 86 return map_iterator_->first;
75 if (map_iterator_ == db_->pending_.end()) 87 if (map_iterator_ == db_->pending_.end())
76 return db_iterator_->key(); 88 return db_iterator_->key();
77 89
78 const leveldb::Slice db_key = db_iterator_->key(); 90 const leveldb::Slice db_key = db_iterator_->key();
79 const leveldb::Slice map_key = map_iterator_->first; 91 const leveldb::Slice map_key = map_iterator_->first;
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 void LevelDBWrapper::Clear() { 204 void LevelDBWrapper::Clear() {
193 pending_.clear(); 205 pending_.clear();
194 } 206 }
195 207
196 leveldb::DB* LevelDBWrapper::GetLevelDB() { 208 leveldb::DB* LevelDBWrapper::GetLevelDB() {
197 return db_.get(); 209 return db_.get();
198 } 210 }
199 211
200 } // namespace drive_backend 212 } // namespace drive_backend
201 } // namespace sync_file_system 213 } // namespace sync_file_system
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698