| Index: sync/internal_api/public/attachments/on_disk_attachment_store.h
|
| diff --git a/sync/internal_api/public/attachments/in_memory_attachment_store.h b/sync/internal_api/public/attachments/on_disk_attachment_store.h
|
| similarity index 39%
|
| copy from sync/internal_api/public/attachments/in_memory_attachment_store.h
|
| copy to sync/internal_api/public/attachments/on_disk_attachment_store.h
|
| index adf4035a9173b7c0d9fcd8dc2509d4d8b367e351..d74b60bf60895fe66b56a1d1df9052fc83c685db 100644
|
| --- a/sync/internal_api/public/attachments/in_memory_attachment_store.h
|
| +++ b/sync/internal_api/public/attachments/on_disk_attachment_store.h
|
| @@ -2,30 +2,41 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#ifndef SYNC_INTERNAL_API_PUBLIC_ATTACHMENTS_IN_MEMORY_ATTACHMENT_STORE_H_
|
| -#define SYNC_INTERNAL_API_PUBLIC_ATTACHMENTS_IN_MEMORY_ATTACHMENT_STORE_H_
|
| +#ifndef SYNC_INTERNAL_API_PUBLIC_ATTACHMENTS_ON_DISK_ATTACHMENT_STORE_H_
|
| +#define SYNC_INTERNAL_API_PUBLIC_ATTACHMENTS_ON_DISK_ATTACHMENT_STORE_H_
|
|
|
| +#include "base/files/file_path.h"
|
| #include "base/memory/ref_counted.h"
|
| -#include "base/single_thread_task_runner.h"
|
| #include "base/threading/non_thread_safe.h"
|
| #include "sync/api/attachments/attachment.h"
|
| #include "sync/api/attachments/attachment_id.h"
|
| #include "sync/api/attachments/attachment_store.h"
|
| #include "sync/base/sync_export.h"
|
|
|
| +namespace base {
|
| +class SequencedTaskRunner;
|
| +} // namespace base
|
| +
|
| +namespace leveldb {
|
| +class DB;
|
| +} // namespace leveldb
|
| +
|
| namespace syncer {
|
|
|
| -// An in-memory implementation of AttachmentStore used for testing.
|
| -// InMemoryAttachmentStore is not threadsafe, it lives on backend thread and
|
| -// posts callbacks with results on |callback_task_runner|.
|
| -class SYNC_EXPORT InMemoryAttachmentStore : public AttachmentStoreBase,
|
| - public base::NonThreadSafe {
|
| +// On-disk implementation of AttachmentStore. Stores attachments in leveldb
|
| +// database in |path| directory.
|
| +class SYNC_EXPORT OnDiskAttachmentStore : public AttachmentStoreBase,
|
| + public base::NonThreadSafe {
|
| public:
|
| - InMemoryAttachmentStore(
|
| - const scoped_refptr<base::SingleThreadTaskRunner>& callback_task_runner);
|
| - virtual ~InMemoryAttachmentStore();
|
| + // Constructs attachment store.
|
| + OnDiskAttachmentStore(
|
| + const scoped_refptr<base::SequencedTaskRunner>& callback_task_runner);
|
| + virtual ~OnDiskAttachmentStore();
|
|
|
| // AttachmentStoreBase implementation.
|
| + // Load opens database, creating it if needed. In the future upgrade code will
|
| + // be invoked from Load as well. If loading fails it posts |callback| with
|
| + // UNSPECIFIED_ERROR.
|
| virtual void Read(const AttachmentIdList& ids,
|
| const ReadCallback& callback) override;
|
| virtual void Write(const AttachmentList& attachments,
|
| @@ -33,11 +44,17 @@ class SYNC_EXPORT InMemoryAttachmentStore : public AttachmentStoreBase,
|
| virtual void Drop(const AttachmentIdList& ids,
|
| const DropCallback& callback) override;
|
|
|
| + // Opens leveldb database at |path|. It will create directory and database if
|
| + // it doesn't exist.
|
| + Result OpenOrCreate(const base::FilePath& path);
|
| +
|
| private:
|
| - scoped_refptr<base::SingleThreadTaskRunner> callback_task_runner_;
|
| - AttachmentMap attachments_;
|
| + std::string CreateDataKeyFromAttachmentId(const AttachmentId& attachment_id);
|
| +
|
| + scoped_refptr<base::SequencedTaskRunner> callback_task_runner_;
|
| + scoped_ptr<leveldb::DB> db_;
|
| };
|
|
|
| } // namespace syncer
|
|
|
| -#endif // SYNC_INTERNAL_API_PUBLIC_ATTACHMENTS_IN_MEMORY_ATTACHMENT_STORE_H_
|
| +#endif // SYNC_INTERNAL_API_PUBLIC_ATTACHMENTS_ON_DISK_ATTACHMENT_STORE_H_
|
|
|