Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 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 | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #ifndef SYNC_API_ATTACHMENTS_ATTACHMENT_STORE_H_ | |
| 6 #define SYNC_API_ATTACHMENTS_ATTACHMENT_STORE_H_ | |
| 7 | |
| 8 #include "base/callback.h" | |
| 9 #include "base/memory/ref_counted.h" | |
| 10 #include "base/memory/scoped_ptr.h" | |
| 11 #include "sync/api/attachments/attachment.h" | |
| 12 #include "sync/api/attachments/attachment_id.h" | |
| 13 #include "sync/base/sync_export.h" | |
| 14 | |
| 15 namespace base { | |
| 16 class RefCountedMemory; | |
| 17 } // namespace base | |
| 18 | |
| 19 namespace syncer { | |
| 20 | |
| 21 class Attachment; | |
| 22 class AttachmentId; | |
| 23 | |
| 24 // A place to locally store and access Attachments. | |
| 25 // | |
| 26 // Destroying this object does not necessarily cancel outstanding async | |
| 27 // operations. If you need cancel like semantics, use WeakPtr in the callbacks. | |
| 28 class SYNC_EXPORT AttachmentStore { | |
|
tim (not reviewing)
2014/08/05 16:47:55
How likely is it this will move back to /api?
maniscalco
2014/08/05 18:05:57
Quite likely. I'll leave it there so we not movin
| |
| 29 public: | |
| 30 AttachmentStore(); | |
| 31 virtual ~AttachmentStore(); | |
| 32 | |
| 33 // TODO(maniscalco): Consider udpating Read and Write methods to support | |
| 34 // resumable transfers (bug 353292). | |
| 35 | |
| 36 enum Result { | |
| 37 SUCCESS, // No error, all completed successfully. | |
| 38 UNSPECIFIED_ERROR, // An unspecified error occurred for one or more items. | |
| 39 }; | |
| 40 | |
| 41 typedef base::Callback<void(const Result&, | |
| 42 scoped_ptr<AttachmentMap>, | |
| 43 scoped_ptr<AttachmentIdList>)> ReadCallback; | |
| 44 typedef base::Callback<void(const Result&)> WriteCallback; | |
| 45 typedef base::Callback<void(const Result&)> DropCallback; | |
| 46 | |
| 47 // Asynchronously reads the attachments identified by |ids|. | |
| 48 // | |
| 49 // |callback| will be invoked when finished. AttachmentStore will attempt to | |
| 50 // read all attachments specified in ids. If any of the attachments do not | |
| 51 // exist or could not be read, |callback|'s Result will be UNSPECIFIED_ERROR. | |
| 52 // Callback's AttachmentMap will contain all attachments that were | |
| 53 // successfully read, AttachmentIdList will contain attachment ids of | |
| 54 // attachments that are unavailable in attachment store, these need to be | |
| 55 // downloaded from server. | |
| 56 // | |
| 57 // Reads on individual attachments are treated atomically; |callback| will not | |
| 58 // read only part of an attachment. | |
| 59 virtual void Read(const AttachmentIdList& ids, | |
| 60 const ReadCallback& callback) = 0; | |
| 61 | |
| 62 // Asynchronously writes |attachments| to the store. | |
| 63 // | |
| 64 // Will not overwrite stored attachments. Attempting to overwrite an | |
| 65 // attachment that already exists is not an error. | |
| 66 // | |
| 67 // |callback| will be invoked when finished. If any of the attachments could | |
| 68 // not be written |callback|'s Result will be UNSPECIFIED_ERROR. When this | |
| 69 // happens, some or none of the attachments may have been written | |
| 70 // successfully. | |
| 71 virtual void Write(const AttachmentList& attachments, | |
| 72 const WriteCallback& callback) = 0; | |
| 73 | |
| 74 // Asynchronously drops |attchments| from this store. | |
| 75 // | |
| 76 // This does not remove attachments from the server. | |
| 77 // | |
| 78 // |callback| will be invoked when finished. Attempting to drop an attachment | |
| 79 // that does not exist is not an error. If any of the existing attachment | |
| 80 // could not be dropped, |callback|'s Result will be UNSPECIFIED_ERROR. When | |
| 81 // this happens, some or none of the attachments may have been dropped | |
| 82 // successfully. | |
| 83 virtual void Drop(const AttachmentIdList& ids, | |
| 84 const DropCallback& callback) = 0; | |
| 85 }; | |
| 86 | |
| 87 } // namespace syncer | |
| 88 | |
| 89 #endif // SYNC_API_ATTACHMENTS_ATTACHMENT_STORE_H_ | |
| OLD | NEW |