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 "sync/internal_api/public/attachments/on_disk_attachment_store.h" | 5 #include "components/sync/core/attachments/on_disk_attachment_store.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <memory> | 9 #include <memory> |
10 #include <string> | 10 #include <string> |
11 #include <utility> | 11 #include <utility> |
12 | 12 |
13 #include "base/bind.h" | 13 #include "base/bind.h" |
14 #include "base/callback.h" | 14 #include "base/callback.h" |
15 #include "base/location.h" | 15 #include "base/location.h" |
16 #include "base/metrics/histogram.h" | 16 #include "base/metrics/histogram.h" |
17 #include "base/sequenced_task_runner.h" | 17 #include "base/sequenced_task_runner.h" |
18 #include "sync/internal_api/attachments/proto/attachment_store.pb.h" | 18 #include "components/sync/core/attachments/attachment_util.h" |
19 #include "sync/internal_api/public/attachments/attachment_util.h" | 19 #include "components/sync/core_impl/attachments/proto/attachment_store.pb.h" |
20 #include "sync/protocol/attachments.pb.h" | 20 #include "components/sync/protocol/attachments.pb.h" |
21 #include "third_party/leveldatabase/env_chromium.h" | 21 #include "third_party/leveldatabase/env_chromium.h" |
22 #include "third_party/leveldatabase/src/include/leveldb/db.h" | 22 #include "third_party/leveldatabase/src/include/leveldb/db.h" |
23 #include "third_party/leveldatabase/src/include/leveldb/options.h" | 23 #include "third_party/leveldatabase/src/include/leveldb/options.h" |
24 #include "third_party/leveldatabase/src/include/leveldb/slice.h" | 24 #include "third_party/leveldatabase/src/include/leveldb/slice.h" |
25 #include "third_party/leveldatabase/src/include/leveldb/status.h" | 25 #include "third_party/leveldatabase/src/include/leveldb/status.h" |
26 #include "third_party/leveldatabase/src/include/leveldb/write_batch.h" | 26 #include "third_party/leveldatabase/src/include/leveldb/write_batch.h" |
27 | 27 |
28 namespace syncer { | 28 namespace syncer { |
29 | 29 |
30 namespace { | 30 namespace { |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
146 } | 146 } |
147 } | 147 } |
148 return false; | 148 return false; |
149 } | 149 } |
150 | 150 |
151 } // namespace | 151 } // namespace |
152 | 152 |
153 OnDiskAttachmentStore::OnDiskAttachmentStore( | 153 OnDiskAttachmentStore::OnDiskAttachmentStore( |
154 const scoped_refptr<base::SequencedTaskRunner>& callback_task_runner, | 154 const scoped_refptr<base::SequencedTaskRunner>& callback_task_runner, |
155 const base::FilePath& path) | 155 const base::FilePath& path) |
156 : AttachmentStoreBackend(callback_task_runner), path_(path) { | 156 : AttachmentStoreBackend(callback_task_runner), path_(path) {} |
157 } | |
158 | 157 |
159 OnDiskAttachmentStore::~OnDiskAttachmentStore() { | 158 OnDiskAttachmentStore::~OnDiskAttachmentStore() {} |
160 } | |
161 | 159 |
162 void OnDiskAttachmentStore::Init( | 160 void OnDiskAttachmentStore::Init( |
163 const AttachmentStore::InitCallback& callback) { | 161 const AttachmentStore::InitCallback& callback) { |
164 DCHECK(CalledOnValidThread()); | 162 DCHECK(CalledOnValidThread()); |
165 AttachmentStore::Result result_code = OpenOrCreate(path_); | 163 AttachmentStore::Result result_code = OpenOrCreate(path_); |
166 UMA_HISTOGRAM_ENUMERATION("Sync.Attachments.StoreInitResult", result_code, | 164 UMA_HISTOGRAM_ENUMERATION("Sync.Attachments.StoreInitResult", result_code, |
167 AttachmentStore::RESULT_SIZE); | 165 AttachmentStore::RESULT_SIZE); |
168 PostCallback(base::Bind(callback, result_code)); | 166 PostCallback(base::Bind(callback, result_code)); |
169 } | 167 } |
170 | 168 |
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
412 attachment_store_pb::RecordMetadata record_metadata; | 410 attachment_store_pb::RecordMetadata record_metadata; |
413 if (!ReadSingleRecordMetadata(attachment_id, &record_metadata)) { | 411 if (!ReadSingleRecordMetadata(attachment_id, &record_metadata)) { |
414 return attachment; | 412 return attachment; |
415 } | 413 } |
416 if (!AttachmentHasReferenceFromComponent(record_metadata, | 414 if (!AttachmentHasReferenceFromComponent(record_metadata, |
417 ComponentToProto(component))) | 415 ComponentToProto(component))) |
418 return attachment; | 416 return attachment; |
419 | 417 |
420 const std::string key = MakeDataKeyFromAttachmentId(attachment_id); | 418 const std::string key = MakeDataKeyFromAttachmentId(attachment_id); |
421 std::string data_str; | 419 std::string data_str; |
422 leveldb::Status status = db_->Get( | 420 leveldb::Status status = |
423 MakeNonCachingReadOptions(), key, &data_str); | 421 db_->Get(MakeNonCachingReadOptions(), key, &data_str); |
424 if (!status.ok()) { | 422 if (!status.ok()) { |
425 DVLOG(1) << "DB::Get for data failed: status=" << status.ToString(); | 423 DVLOG(1) << "DB::Get for data failed: status=" << status.ToString(); |
426 return attachment; | 424 return attachment; |
427 } | 425 } |
428 scoped_refptr<base::RefCountedMemory> data = | 426 scoped_refptr<base::RefCountedMemory> data = |
429 base::RefCountedString::TakeString(&data_str); | 427 base::RefCountedString::TakeString(&data_str); |
430 uint32_t crc32c = ComputeCrc32c(data); | 428 uint32_t crc32c = ComputeCrc32c(data); |
431 if (record_metadata.has_crc32c()) { | 429 if (record_metadata.has_crc32c()) { |
432 if (record_metadata.crc32c() != crc32c) { | 430 if (record_metadata.crc32c() != crc32c) { |
433 DVLOG(1) << "Attachment crc32c does not match value read from store"; | 431 DVLOG(1) << "Attachment crc32c does not match value read from store"; |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
534 return key; | 532 return key; |
535 } | 533 } |
536 | 534 |
537 AttachmentMetadata OnDiskAttachmentStore::MakeAttachmentMetadata( | 535 AttachmentMetadata OnDiskAttachmentStore::MakeAttachmentMetadata( |
538 const AttachmentId& attachment_id, | 536 const AttachmentId& attachment_id, |
539 const attachment_store_pb::RecordMetadata& record_metadata) { | 537 const attachment_store_pb::RecordMetadata& record_metadata) { |
540 return AttachmentMetadata(attachment_id, record_metadata.attachment_size()); | 538 return AttachmentMetadata(attachment_id, record_metadata.attachment_size()); |
541 } | 539 } |
542 | 540 |
543 } // namespace syncer | 541 } // namespace syncer |
OLD | NEW |