// Copyright 2014 The Chromium Authors. All rights reserved. // 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_ATTACHMENT_UPLOADER_H_ #define SYNC_INTERNAL_API_PUBLIC_ATTACHMENTS_ATTACHMENT_UPLOADER_H_ #include "base/basictypes.h" #include "base/callback.h" #include "base/memory/scoped_ptr.h" #include "sync/api/attachments/attachment.h" #include "sync/base/sync_export.h" namespace syncer { // AttachmentUploader is responsible for uploading attachments to the server. class SYNC_EXPORT AttachmentUploader { public: // The result of an UploadAttachment operation. enum UploadResult { UPLOAD_SUCCESS, // No error, attachment was uploaded // successfully. UPLOAD_TRANSIENT_ERROR, // A transient error occurred, try again later. UPLOAD_UNSPECIFIED_ERROR, // An unspecified error occurred. }; typedef base::Callback UploadCallback; AttachmentUploader(); virtual ~AttachmentUploader(); // Upload |attachment| and invoke |callback| when done. // // |callback| will be invoked when the operation has completed (successfully // or otherwise). // // |callback| will receive an UploadResult code and the AttachmentId of the // newly uploaded attachment. virtual void UploadAttachment(const Attachment& attachment, const UploadCallback& callback) = 0; }; } // namespace syncer #endif // SYNC_INTERNAL_API_PUBLIC_ATTACHMENTS_ATTACHMENT_UPLOADER_H_