Home | History | Annotate | Download | only in attachments
      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_UPLOADER_H_
      6 #define SYNC_API_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_UNSPECIFIED_ERROR,  // An unspecified error occurred.
     24   };
     25 
     26   typedef base::Callback<void(const UploadResult&, const AttachmentId&)>
     27       UploadCallback;
     28 
     29   AttachmentUploader();
     30   virtual ~AttachmentUploader();
     31 
     32   // Upload |attachment| and invoke |callback| when done.
     33   //
     34   // |callback| will be invoked when the operation has completed (successfully
     35   // or otherwise).
     36   //
     37   // |callback| will receive an UploadResult code and an updated AttachmentId
     38   // containing the server address of the newly uploaded attachment.
     39   virtual void UploadAttachment(const Attachment& attachment,
     40                                 const UploadCallback& callback) = 0;
     41 };
     42 
     43 }  // namespace syncer
     44 
     45 #endif  // SYNC_API_ATTACHMENTS_ATTACHMENT_UPLOADER_H_
     46