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_INTERNAL_API_PUBLIC_ATTACHMENTS_ATTACHMENT_UPLOADER_H_ 6 #define SYNC_INTERNAL_API_PUBLIC_ATTACHMENTS_ATTACHMENT_UPLOADER_H_ 7 8 #include "base/basictypes.h" 9 #include "base/callback.h" 10 #include "base/memory/scoped_ptr.h" 11 #include "sync/api/attachments/attachment.h" 12 #include "sync/base/sync_export.h" 13 14 namespace syncer { 15 16 // AttachmentUploader is responsible for uploading attachments to the server. 17 class SYNC_EXPORT AttachmentUploader { 18 public: 19 // The result of an UploadAttachment operation. 20 enum UploadResult { 21 UPLOAD_SUCCESS, // No error, attachment was uploaded 22 // successfully. 23 UPLOAD_TRANSIENT_ERROR, // A transient error occurred, try again later. 24 UPLOAD_UNSPECIFIED_ERROR, // An unspecified error occurred. 25 }; 26 27 typedef base::Callback<void(const UploadResult&, const AttachmentId&)> 28 UploadCallback; 29 30 AttachmentUploader(); 31 virtual ~AttachmentUploader(); 32 33 // Upload |attachment| and invoke |callback| when done. 34 // 35 // |callback| will be invoked when the operation has completed (successfully 36 // or otherwise). 37 // 38 // |callback| will receive an UploadResult code and the AttachmentId of the 39 // newly uploaded attachment. 40 virtual void UploadAttachment(const Attachment& attachment, 41 const UploadCallback& callback) = 0; 42 }; 43 44 } // namespace syncer 45 46 #endif // SYNC_INTERNAL_API_PUBLIC_ATTACHMENTS_ATTACHMENT_UPLOADER_H_ 47