Index: sync/api/attachments/attachment_store.h |
diff --git a/sync/api/attachments/attachment_store.h b/sync/api/attachments/attachment_store.h |
index 45ccaf9c8efa355eaa53862eaf89463fc86c97eb..520c441deffc67aa8ceb453edb5ffc1ef96aad11 100644 |
--- a/sync/api/attachments/attachment_store.h |
+++ b/sync/api/attachments/attachment_store.h |
@@ -13,7 +13,9 @@ |
#include "sync/base/sync_export.h" |
namespace base { |
+class FilePath; |
class RefCountedMemory; |
+class SequencedTaskRunner; |
} // namespace base |
namespace syncer { |
@@ -90,15 +92,42 @@ class SYNC_EXPORT AttachmentStore |
: public AttachmentStoreBase, |
public base::RefCountedThreadSafe<AttachmentStore> { |
public: |
+ typedef base::Callback<void(const Result&, |
+ const scoped_refptr<AttachmentStore>&)> |
+ CreateCallback; |
+ |
AttachmentStore(); |
// Creates an AttachmentStoreHandle backed by in-memory implementation of |
// attachment store. For now frontend lives on the same thread as backend. |
static scoped_refptr<AttachmentStore> CreateInMemoryStore(); |
+ // Creates an AttachmentStoreHandle backed by on-disk implementation of |
+ // attachment store. Opens corresponding leveldb database located at |path|. |
+ // All backend operations are scheduled to |backend_task_runner|. Opening |
+ // attachment store is asynchronous, once it finishes |callback| will be |
+ // called on the thread that called CreateOnDiskStore. |store| parameter of |
+ // callback is only valid when |result| is SUCCESS. |
+ static void CreateOnDiskStore( |
+ const base::FilePath& path, |
+ const scoped_refptr<base::SequencedTaskRunner>& backend_task_runner, |
+ const CreateCallback& callback); |
+ |
protected: |
friend class base::RefCountedThreadSafe<AttachmentStore>; |
virtual ~AttachmentStore(); |
+ |
+ private: |
+ static void CreateOnDiskStoreOnBackendThread( |
+ const base::FilePath& path, |
+ const scoped_refptr<base::SequencedTaskRunner>& frontend_task_runner, |
+ const CreateCallback& callback); |
+ |
+ static void CreateBackendDone( |
+ const Result& result, |
+ scoped_ptr<AttachmentStoreBase> backend, |
+ const scoped_refptr<base::SequencedTaskRunner>& backend_task_runner, |
+ const CreateCallback& callback); |
}; |
} // namespace syncer |