| // Copyright 2013 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 COMPONENTS_DRIVE_JOB_LIST_H_ |
| #define COMPONENTS_DRIVE_JOB_LIST_H_ |
| |
| #include <stdint.h> |
| |
| #include <string> |
| #include <vector> |
| |
| #include "base/files/file_path.h" |
| #include "components/drive/file_errors.h" |
| |
| namespace drive { |
| |
| // Enum representing the type of job. |
| enum JobType { |
| TYPE_GET_ABOUT_RESOURCE, |
| TYPE_GET_APP_LIST, |
| TYPE_GET_ALL_TEAM_DRIVE_LIST, |
| TYPE_GET_ALL_RESOURCE_LIST, |
| TYPE_GET_RESOURCE_LIST_IN_DIRECTORY, |
| TYPE_SEARCH, |
| TYPE_GET_CHANGE_LIST, |
| TYPE_GET_START_PAGE_TOKEN, |
| TYPE_GET_REMAINING_CHANGE_LIST, |
| TYPE_GET_REMAINING_TEAM_DRIVE_LIST, |
| TYPE_GET_REMAINING_FILE_LIST, |
| TYPE_GET_RESOURCE_ENTRY, |
| TYPE_GET_SHARE_URL, |
| TYPE_TRASH_RESOURCE, |
| TYPE_COPY_RESOURCE, |
| TYPE_UPDATE_RESOURCE, |
| TYPE_ADD_RESOURCE_TO_DIRECTORY, |
| TYPE_REMOVE_RESOURCE_FROM_DIRECTORY, |
| TYPE_ADD_NEW_DIRECTORY, |
| TYPE_DOWNLOAD_FILE, |
| TYPE_UPLOAD_NEW_FILE, |
| TYPE_UPLOAD_EXISTING_FILE, |
| TYPE_ADD_PERMISSION, |
| }; |
| |
| // Returns the string representation of |type|. |
| std::string JobTypeToString(JobType type); |
| |
| // Current state of the job. |
| enum JobState { |
| // The job is queued, but not yet executed. |
| STATE_NONE, |
| |
| // The job is in the process of being handled. |
| STATE_RUNNING, |
| |
| // The job failed, but has been re-added to the queue. |
| STATE_RETRY, |
| }; |
| |
| // Returns the string representation of |state|. |
| std::string JobStateToString(JobState state); |
| |
| // Unique ID assigned to each job. |
| typedef int32_t JobID; |
| |
| // Information about a specific job that is visible to other systems. |
| struct JobInfo { |
| explicit JobInfo(JobType job_type); |
| |
| // Type of the job. |
| JobType job_type; |
| |
| // Id of the job, which can be used to query or modify it. |
| JobID job_id; |
| |
| // Current state of the operation. |
| JobState state; |
| |
| // The fields below are available only for jobs with job_type: |
| // TYPE_DOWNLOAD_FILE, TYPE_UPLOAD_NEW_FILE, or TYPE_UPLOAD_EXISTING_FILE. |
| |
| // Number of bytes completed. |
| int64_t num_completed_bytes; |
| |
| // Total bytes of this operation. |
| int64_t num_total_bytes; |
| |
| // Drive path of the file that this job acts on. |
| base::FilePath file_path; |
| |
| // Time when the job is started (i.e. the request is sent to the server). |
| base::Time start_time; |
| |
| // Returns the string representation of the job info. |
| std::string ToString() const; |
| }; |
| |
| // Checks if |job_info| represents a job for currently active file transfer. |
| bool IsActiveFileTransferJobInfo(const JobInfo& job_info); |
| |
| // The interface for observing JobListInterface. |
| // All events are notified in the UI thread. |
| class JobListObserver { |
| public: |
| // Called when a new job id added. |
| virtual void OnJobAdded(const JobInfo& job_info) {} |
| |
| // Called when a job id finished. |
| // |error| is FILE_ERROR_OK when the job successfully finished, and a value |
| // telling the reason of failure when the jobs is failed. |
| virtual void OnJobDone(const JobInfo& job_info, |
| FileError error) {} |
| |
| // Called when a job status is updated. |
| virtual void OnJobUpdated(const JobInfo& job_info) {} |
| |
| protected: |
| virtual ~JobListObserver() = default; |
| }; |
| |
| // The interface to expose the list of issued Drive jobs. |
| class JobListInterface { |
| public: |
| virtual ~JobListInterface() = default; |
| |
| // Returns the list of jobs currently managed by the scheduler. |
| virtual std::vector<JobInfo> GetJobInfoList() = 0; |
| |
| // Adds an observer. |
| virtual void AddObserver(JobListObserver* observer) = 0; |
| |
| // Removes an observer. |
| virtual void RemoveObserver(JobListObserver* observer) = 0; |
| |
| // Cancels the job. |
| virtual void CancelJob(JobID job_id) = 0; |
| |
| // Cancels all the jobs. |
| virtual void CancelAllJobs() = 0; |
| }; |
| |
| } // namespace drive |
| |
| #endif // COMPONENTS_DRIVE_JOB_LIST_H_ |