OLD | NEW |
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/metadata_database_index.
h" | 5 #include "chrome/browser/sync_file_system/drive_backend/metadata_database_index.
h" |
6 | 6 |
7 #include <tuple> | 7 #include <tuple> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
255 MetadataDatabaseIndex::~MetadataDatabaseIndex() {} | 255 MetadataDatabaseIndex::~MetadataDatabaseIndex() {} |
256 | 256 |
257 void MetadataDatabaseIndex::RemoveUnreachableItems() { | 257 void MetadataDatabaseIndex::RemoveUnreachableItems() { |
258 // Do nothing. MetadataDatabaseIndex is behind a private flag and will be | 258 // Do nothing. MetadataDatabaseIndex is behind a private flag and will be |
259 // removed soon. | 259 // removed soon. |
260 // TODO(crbug.com/568008): Remove MetadataDatabaseIndex. | 260 // TODO(crbug.com/568008): Remove MetadataDatabaseIndex. |
261 } | 261 } |
262 | 262 |
263 bool MetadataDatabaseIndex::GetFileMetadata( | 263 bool MetadataDatabaseIndex::GetFileMetadata( |
264 const std::string& file_id, FileMetadata* metadata) const { | 264 const std::string& file_id, FileMetadata* metadata) const { |
265 FileMetadata* identified = metadata_by_id_.get(file_id); | 265 auto it = metadata_by_id_.find(file_id); |
266 if (!identified) | 266 if (it == metadata_by_id_.end()) |
267 return false; | 267 return false; |
| 268 FileMetadata* identified = it->second.get(); |
268 if (metadata) | 269 if (metadata) |
269 metadata->CopyFrom(*identified); | 270 metadata->CopyFrom(*identified); |
270 return true; | 271 return true; |
271 } | 272 } |
272 | 273 |
273 bool MetadataDatabaseIndex::GetFileTracker(int64_t tracker_id, | 274 bool MetadataDatabaseIndex::GetFileTracker(int64_t tracker_id, |
274 FileTracker* tracker) const { | 275 FileTracker* tracker) const { |
275 FileTracker* identified = tracker_by_id_.get(tracker_id); | 276 auto it = tracker_by_id_.find(tracker_id); |
276 if (!identified) | 277 if (it == tracker_by_id_.end()) |
277 return false; | 278 return false; |
| 279 FileTracker* identified = it->second.get(); |
278 if (tracker) | 280 if (tracker) |
279 tracker->CopyFrom(*identified); | 281 tracker->CopyFrom(*identified); |
280 return true; | 282 return true; |
281 } | 283 } |
282 | 284 |
283 void MetadataDatabaseIndex::StoreFileMetadata( | 285 void MetadataDatabaseIndex::StoreFileMetadata( |
284 std::unique_ptr<FileMetadata> metadata) { | 286 std::unique_ptr<FileMetadata> metadata) { |
285 PutFileMetadataToDB(*metadata.get(), db_); | 287 PutFileMetadataToDB(*metadata.get(), db_); |
286 if (!metadata) { | 288 if (!metadata) { |
287 NOTREACHED(); | 289 NOTREACHED(); |
288 return; | 290 return; |
289 } | 291 } |
290 | 292 |
291 std::string file_id = metadata->file_id(); | 293 std::string file_id = metadata->file_id(); |
292 metadata_by_id_.set(file_id, std::move(metadata)); | 294 metadata_by_id_[file_id] = std::move(metadata); |
293 } | 295 } |
294 | 296 |
295 void MetadataDatabaseIndex::StoreFileTracker( | 297 void MetadataDatabaseIndex::StoreFileTracker( |
296 std::unique_ptr<FileTracker> tracker) { | 298 std::unique_ptr<FileTracker> tracker) { |
297 PutFileTrackerToDB(*tracker.get(), db_); | 299 PutFileTrackerToDB(*tracker.get(), db_); |
298 if (!tracker) { | 300 if (!tracker) { |
299 NOTREACHED(); | 301 NOTREACHED(); |
300 return; | 302 return; |
301 } | 303 } |
302 | 304 |
303 int64_t tracker_id = tracker->tracker_id(); | 305 int64_t tracker_id = tracker->tracker_id(); |
304 FileTracker* old_tracker = tracker_by_id_.get(tracker_id); | 306 auto old_tracker_it = tracker_by_id_.find(tracker_id); |
305 | 307 |
306 if (!old_tracker) { | 308 if (old_tracker_it == tracker_by_id_.end()) { |
307 DVLOG(3) << "Adding new tracker: " << tracker->tracker_id() | 309 DVLOG(3) << "Adding new tracker: " << tracker->tracker_id() |
308 << " " << GetTrackerTitle(*tracker); | 310 << " " << GetTrackerTitle(*tracker); |
309 | 311 |
310 AddToAppIDIndex(*tracker); | 312 AddToAppIDIndex(*tracker); |
311 AddToPathIndexes(*tracker); | 313 AddToPathIndexes(*tracker); |
312 AddToFileIDIndexes(*tracker); | 314 AddToFileIDIndexes(*tracker); |
313 AddToDirtyTrackerIndexes(*tracker); | 315 AddToDirtyTrackerIndexes(*tracker); |
314 } else { | 316 } else { |
315 DVLOG(3) << "Updating tracker: " << tracker->tracker_id() | 317 DVLOG(3) << "Updating tracker: " << tracker->tracker_id() |
316 << " " << GetTrackerTitle(*tracker); | 318 << " " << GetTrackerTitle(*tracker); |
317 | 319 |
| 320 FileTracker* old_tracker = old_tracker_it->second.get(); |
318 UpdateInAppIDIndex(*old_tracker, *tracker); | 321 UpdateInAppIDIndex(*old_tracker, *tracker); |
319 UpdateInPathIndexes(*old_tracker, *tracker); | 322 UpdateInPathIndexes(*old_tracker, *tracker); |
320 UpdateInFileIDIndexes(*old_tracker, *tracker); | 323 UpdateInFileIDIndexes(*old_tracker, *tracker); |
321 UpdateInDirtyTrackerIndexes(*old_tracker, *tracker); | 324 UpdateInDirtyTrackerIndexes(*old_tracker, *tracker); |
322 } | 325 } |
323 | 326 |
324 tracker_by_id_.set(tracker_id, std::move(tracker)); | 327 tracker_by_id_[tracker_id] = std::move(tracker); |
325 } | 328 } |
326 | 329 |
327 void MetadataDatabaseIndex::RemoveFileMetadata(const std::string& file_id) { | 330 void MetadataDatabaseIndex::RemoveFileMetadata(const std::string& file_id) { |
328 PutFileMetadataDeletionToDB(file_id, db_); | 331 PutFileMetadataDeletionToDB(file_id, db_); |
329 metadata_by_id_.erase(file_id); | 332 metadata_by_id_.erase(file_id); |
330 } | 333 } |
331 | 334 |
332 void MetadataDatabaseIndex::RemoveFileTracker(int64_t tracker_id) { | 335 void MetadataDatabaseIndex::RemoveFileTracker(int64_t tracker_id) { |
333 PutFileTrackerDeletionToDB(tracker_id, db_); | 336 PutFileTrackerDeletionToDB(tracker_id, db_); |
334 | 337 |
335 FileTracker* tracker = tracker_by_id_.get(tracker_id); | 338 auto tracker_it = tracker_by_id_.find(tracker_id); |
336 if (!tracker) { | 339 if (tracker_it == tracker_by_id_.end()) { |
337 NOTREACHED(); | 340 NOTREACHED(); |
338 return; | 341 return; |
339 } | 342 } |
| 343 FileTracker* tracker = tracker_it->second.get(); |
340 | 344 |
341 DVLOG(3) << "Removing tracker: " | 345 DVLOG(3) << "Removing tracker: " |
342 << tracker->tracker_id() << " " << GetTrackerTitle(*tracker); | 346 << tracker->tracker_id() << " " << GetTrackerTitle(*tracker); |
343 | 347 |
344 RemoveFromAppIDIndex(*tracker); | 348 RemoveFromAppIDIndex(*tracker); |
345 RemoveFromPathIndexes(*tracker); | 349 RemoveFromPathIndexes(*tracker); |
346 RemoveFromFileIDIndexes(*tracker); | 350 RemoveFromFileIDIndexes(*tracker); |
347 RemoveFromDirtyTrackerIndexes(*tracker); | 351 RemoveFromDirtyTrackerIndexes(*tracker); |
348 | 352 |
349 tracker_by_id_.erase(tracker_id); | 353 tracker_by_id_.erase(tracker_id); |
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
484 if (!service_metadata_->has_next_tracker_id()) { | 488 if (!service_metadata_->has_next_tracker_id()) { |
485 NOTREACHED(); | 489 NOTREACHED(); |
486 return kInvalidTrackerID; | 490 return kInvalidTrackerID; |
487 } | 491 } |
488 return service_metadata_->next_tracker_id(); | 492 return service_metadata_->next_tracker_id(); |
489 } | 493 } |
490 | 494 |
491 std::vector<std::string> MetadataDatabaseIndex::GetRegisteredAppIDs() const { | 495 std::vector<std::string> MetadataDatabaseIndex::GetRegisteredAppIDs() const { |
492 std::vector<std::string> result; | 496 std::vector<std::string> result; |
493 result.reserve(app_root_by_app_id_.size()); | 497 result.reserve(app_root_by_app_id_.size()); |
494 for (TrackerIDByAppID::const_iterator itr = app_root_by_app_id_.begin(); | 498 for (const auto& pair : app_root_by_app_id_) |
495 itr != app_root_by_app_id_.end(); ++itr) | 499 result.push_back(pair.first); |
496 result.push_back(itr->first); | |
497 return result; | 500 return result; |
498 } | 501 } |
499 | 502 |
500 std::vector<int64_t> MetadataDatabaseIndex::GetAllTrackerIDs() const { | 503 std::vector<int64_t> MetadataDatabaseIndex::GetAllTrackerIDs() const { |
501 std::vector<int64_t> result; | 504 std::vector<int64_t> result; |
502 for (TrackerByID::const_iterator itr = tracker_by_id_.begin(); | 505 for (const auto& pair : tracker_by_id_) |
503 itr != tracker_by_id_.end(); ++itr) { | 506 result.push_back(pair.first); |
504 result.push_back(itr->first); | |
505 } | |
506 return result; | 507 return result; |
507 } | 508 } |
508 | 509 |
509 std::vector<std::string> MetadataDatabaseIndex::GetAllMetadataIDs() const { | 510 std::vector<std::string> MetadataDatabaseIndex::GetAllMetadataIDs() const { |
510 std::vector<std::string> result; | 511 std::vector<std::string> result; |
511 for (MetadataByID::const_iterator itr = metadata_by_id_.begin(); | 512 for (const auto& pair : metadata_by_id_) |
512 itr != metadata_by_id_.end(); ++itr) { | 513 result.push_back(pair.first); |
513 result.push_back(itr->first); | |
514 } | |
515 return result; | 514 return result; |
516 } | 515 } |
517 | 516 |
518 void MetadataDatabaseIndex::AddToAppIDIndex( | 517 void MetadataDatabaseIndex::AddToAppIDIndex( |
519 const FileTracker& new_tracker) { | 518 const FileTracker& new_tracker) { |
520 if (!IsAppRoot(new_tracker)) | 519 if (!IsAppRoot(new_tracker)) |
521 return; | 520 return; |
522 | 521 |
523 DVLOG(3) << " Add to app_root_by_app_id_: " << new_tracker.app_id(); | 522 DVLOG(3) << " Add to app_root_by_app_id_: " << new_tracker.app_id(); |
524 | 523 |
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
767 | 766 |
768 DVLOG(3) << " Remove from dirty_trackers_: " << tracker_id; | 767 DVLOG(3) << " Remove from dirty_trackers_: " << tracker_id; |
769 dirty_trackers_.erase(tracker_id); | 768 dirty_trackers_.erase(tracker_id); |
770 | 769 |
771 demoted_dirty_trackers_.erase(tracker_id); | 770 demoted_dirty_trackers_.erase(tracker_id); |
772 } | 771 } |
773 } | 772 } |
774 | 773 |
775 } // namespace drive_backend | 774 } // namespace drive_backend |
776 } // namespace sync_file_system | 775 } // namespace sync_file_system |
OLD | NEW |