Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1621)

Unified Diff: chrome/browser/chromeos/drive/drive_scheduler.h

Issue 14493009: drive: Rename DriveScheduler to JobScheduler (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix indent Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/drive/drive_scheduler.h
diff --git a/chrome/browser/chromeos/drive/drive_scheduler.h b/chrome/browser/chromeos/drive/drive_scheduler.h
deleted file mode 100644
index e75b2edf24cad7af7341fb954fc81e6aef686159..0000000000000000000000000000000000000000
--- a/chrome/browser/chromeos/drive/drive_scheduler.h
+++ /dev/null
@@ -1,417 +0,0 @@
-// Copyright (c) 2012 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 CHROME_BROWSER_CHROMEOS_DRIVE_DRIVE_SCHEDULER_H_
-#define CHROME_BROWSER_CHROMEOS_DRIVE_DRIVE_SCHEDULER_H_
-
-#include <list>
-#include <vector>
-
-#include "base/id_map.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/observer_list.h"
-#include "chrome/browser/chromeos/drive/drive_file_system_interface.h"
-#include "chrome/browser/chromeos/drive/job_list.h"
-#include "chrome/browser/google_apis/drive_service_interface.h"
-#include "chrome/browser/google_apis/drive_uploader.h"
-#include "net/base/network_change_notifier.h"
-
-class Profile;
-
-namespace drive {
-
-// The DriveScheduler is responsible for queuing and scheduling drive
-// operations. It is responsible for handling retry logic, rate limiting, as
-// concurrency as appropriate.
-class DriveScheduler
- : public net::NetworkChangeNotifier::ConnectionTypeObserver,
- public JobListInterface {
- public:
- DriveScheduler(Profile* profile,
- google_apis::DriveServiceInterface* drive_service);
- virtual ~DriveScheduler();
-
- // JobListInterface overrides.
- virtual std::vector<JobInfo> GetJobInfoList() OVERRIDE;
- virtual void AddObserver(JobListObserver* observer) OVERRIDE;
- virtual void RemoveObserver(JobListObserver* observer) OVERRIDE;
- virtual void CancelJob(JobID job_id) OVERRIDE;
- virtual void CancelAllJobs() OVERRIDE;
-
- // Adds a GetAccountMetadata operation to the queue.
- // |callback| must not be null.
- void GetAccountMetadata(
- const google_apis::GetAccountMetadataCallback& callback);
-
- // Adds a GetAppList operation to the queue.
- // |callback| must not be null.
- void GetAppList(const google_apis::GetAppListCallback& callback);
-
- // Adds a GetAboutResource operation to the queue.
- // |callback| must not be null.
- void GetAboutResource(const google_apis::GetAboutResourceCallback& callback);
-
- // Adds a GetAllResourceList operation to the queue.
- // |callback| must not be null.
- void GetAllResourceList(const google_apis::GetResourceListCallback& callback);
-
- // Adds a GetResourceListInDirectory operation to the queue.
- // |callback| must not be null.
- void GetResourceListInDirectory(
- const std::string& directory_resource_id,
- const google_apis::GetResourceListCallback& callback);
-
- // Adds a Search operation to the queue.
- // |callback| must not be null.
- void Search(const std::string& search_query,
- const google_apis::GetResourceListCallback& callback);
-
- // Adds a GetChangeList operation to the queue.
- // |callback| must not be null.
- void GetChangeList(int64 start_changestamp,
- const google_apis::GetResourceListCallback& callback);
-
- // Adds ContinueGetResourceList operation to the queue.
- // |callback| must not be null.
- void ContinueGetResourceList(
- const GURL& feed_url,
- const google_apis::GetResourceListCallback& callback);
-
- // Adds a GetResourceEntry operation to the queue.
- void GetResourceEntry(const std::string& resource_id,
- const DriveClientContext& context,
- const google_apis::GetResourceEntryCallback& callback);
-
-
- // Adds a DeleteResource operation to the queue.
- void DeleteResource(const std::string& resource_id,
- const google_apis::EntryActionCallback& callback);
-
-
- // Adds a CopyHostedDocument operation to the queue.
- void CopyHostedDocument(
- const std::string& resource_id,
- const std::string& new_name,
- const google_apis::GetResourceEntryCallback& callback);
-
- // Adds a RenameResource operation to the queue.
- void RenameResource(const std::string& resource_id,
- const std::string& new_name,
- const google_apis::EntryActionCallback& callback);
-
- // Adds a AddResourceToDirectory operation to the queue.
- void AddResourceToDirectory(const std::string& parent_resource_id,
- const std::string& resource_id,
- const google_apis::EntryActionCallback& callback);
-
- // Adds a RemoveResourceFromDirectory operation to the queue.
- void RemoveResourceFromDirectory(
- const std::string& parent_resource_id,
- const std::string& resource_id,
- const google_apis::EntryActionCallback& callback);
-
- // Adds a AddNewDirectory operation to the queue.
- void AddNewDirectory(const std::string& parent_resource_id,
- const std::string& directory_name,
- const google_apis::GetResourceEntryCallback& callback);
-
- // Adds a DownloadFile operation to the queue.
- void DownloadFile(
- const base::FilePath& virtual_path,
- const base::FilePath& local_cache_path,
- const GURL& download_url,
- const DriveClientContext& context,
- const google_apis::DownloadActionCallback& download_action_callback,
- const google_apis::GetContentCallback& get_content_callback);
-
- // Adds an UploadNewFile operation to the queue.
- void UploadNewFile(const std::string& parent_resource_id,
- const base::FilePath& drive_file_path,
- const base::FilePath& local_file_path,
- const std::string& title,
- const std::string& content_type,
- const DriveClientContext& context,
- const google_apis::UploadCompletionCallback& callback);
-
- // Adds an UploadExistingFile operation to the queue.
- void UploadExistingFile(
- const std::string& resource_id,
- const base::FilePath& drive_file_path,
- const base::FilePath& local_file_path,
- const std::string& content_type,
- const std::string& etag,
- const DriveClientContext& context,
- const google_apis::UploadCompletionCallback& upload_completion_callback);
-
- private:
- friend class DriveSchedulerTest;
-
- enum QueueType {
- METADATA_QUEUE,
- FILE_QUEUE,
- NUM_QUEUES
- };
-
- static const int kMaxJobCount[NUM_QUEUES];
-
- // Represents a single entry in the job queue.
- struct QueueEntry {
- QueueEntry();
- ~QueueEntry();
-
- static bool Compare(const QueueEntry* left, const QueueEntry* right);
-
- JobID job_id;
-
- // Context of the job.
- DriveClientContext context;
-
- // Resource ID to use for the operation.
- // Used by:
- // TYPE_GET_RESOURCE_ENTRY
- // TYPE_DELETE_RESOURCE
- // TYPE_RENAME_RESOURCE
- // TYPE_ADD_RESOURCE_TO_DIRECTORY
- // TYPE_UPLOAD_EXISTING_FILE
- std::string resource_id;
-
- // URL to access the contents of the operation's target.
- // Used by:
- // TYPE_DOWNLOAD_FILE
- GURL download_url;
-
- // Online and cache path of the operation's target.
- // Used by:
- // TYPE_DOWNLOAD_FILE
- // TYPE_UPLOAD_NEW_FILE
- // TYPE_UPLOAD_EXISTING_FILE
- base::FilePath drive_file_path;
- base::FilePath local_file_path;
-
- // Parameter to get change list.
- // Used by:
- // TYPE_GET_CHANGE_LIST
- int64 start_changestamp;
-
- // Parameter to get a resource list in a particular directory.
- // Used by:
- // TYPE_GET_RESOURCE_LIST_IN_DIRECTORY
- std::string directory_resource_id;
-
- // Parameter to search the resource list
- // Used by:
- // TYPE_SEARCH
- std::string search_query;
-
- // Parameter to get remaining results of an operation via
- // GetResourceListCallback.
- // Used by:
- // TYPE_CONTINUE_GET_RESOURCE_LIST
- GURL feed_url;
-
- // Parameter for copy or rename.
- // Used by:
- // TYPE_COPY_HOSTED_DOCUMENT
- // TYPE_RENAME_RESOURCE
- std::string new_name;
-
- // Parameters for AddNewDirectory
- // Used by:
- // TYPE_ADD_NEW_DIRECTORY
- // TYPE_ADD_RESOURCE_TO_DIRECTORY
- // TYPE_REMOVE_RESOURCE_FROM_DIRECTORY
- std::string parent_resource_id;
- std::string directory_name;
-
- // Callback for operations that take a GetResourceListCallback.
- // Used by:
- // TYPE_GET_ALL_RESOURCE_LIST
- // TYPE_GET_RESOURCE_LIST_IN_DIRECTORY
- // TYPE_SEARCH
- // TYPE_CONTINUE_GET_RESOURCE_LIST
- google_apis::GetResourceListCallback get_resource_list_callback;
-
- // Callback for operations that take a GetResourceEntryCallback.
- // Used by:
- // TYPE_GET_RESOURCE_ENTRY,
- // TYPE_COPY_HOSTED_DOCUMENT,
- // TYPE_ADD_NEW_DIRECTORY,
- google_apis::GetResourceEntryCallback get_resource_entry_callback;
-
- // Callback for operations that take a GetAccountMetadataCallback.
- // Used by:
- // TYPE_GET_ACCOUNT_METADATA,
- google_apis::GetAccountMetadataCallback get_account_metadata_callback;
-
- // Callback for operations that take a GetAboutResourceCallback.
- // Used by:
- // TYPE_GET_ABOUT_RESOURCE,
- google_apis::GetAboutResourceCallback get_about_resource_callback;
-
- // Callback for operations that take a GetAppListCallback.
- // Used by:
- // TYPE_GET_APP_LIST,
- google_apis::GetAppListCallback get_app_list_callback;
-
- // Callback for operations that take a EntryActionCallback.
- // Used by:
- // TYPE_DELETE_RESOURCE,
- // TYPE_RENAME_RESOURCE,
- // TYPE_ADD_RESOURCE_TO_DIRECTORY,
- // TYPE_REMOVE_RESOURCE_FROM_DIRECTORY,
- google_apis::EntryActionCallback entry_action_callback;
-
- // Callback for operations that take a DownloadActionCallback
- // Used by:
- // TYPE_DOWNLOAD_FILE
- google_apis::DownloadActionCallback download_action_callback;
-
- // Callback for result of GetContent.
- // Used by:
- // TYPE_DOWNLOAD_FILE
- google_apis::GetContentCallback get_content_callback;
-
- // Parameters for UploadNewFile and UploadExistingFile
- // Used by:
- // TYPE_UPLOAD_NEW_FILE
- // TYPE_UPLOAD_EXISTING_FILE
- std::string content_type;
- std::string etag;
- std::string title;
- google_apis::UploadCompletionCallback upload_completion_callback;
- };
-
- // Adds the specified job to the queue and starts the job loop for the queue
- // if needed.
- void StartNewJob(scoped_ptr<QueueEntry> job, JobType type);
-
- // Adds the specified job to the queue. Takes ownership of |job|
- void QueueJob(scoped_ptr<QueueEntry> job);
-
- // Starts the job loop, if it is not already running.
- void StartJobLoop(QueueType queue_type);
-
- // Determines the next job that should run, and starts it.
- void DoJobLoop(QueueType queue_type);
-
- // Checks if operations should be suspended, such as if the network is
- // disconnected.
- //
- // Returns true when it should stop, and false if it should continue.
- bool ShouldStopJobLoop(QueueType queue_type,
- const DriveClientContext& context);
-
- // Increases the throttle delay if it's below the maximum value, and posts a
- // task to continue the loop after the delay.
- void ThrottleAndContinueJobLoop(QueueType queue_type);
-
- // Resets the throttle delay to the initial value, and continues the job loop.
- void ResetThrottleAndContinueJobLoop(QueueType queue_type);
-
- // Retries the |queue_entry| job if needed and returns null. Otherwise cleans
- // up the job information and returns |queue_entry| as is so that callers can
- // extract and invoke the callback function object stored there.
- scoped_ptr<QueueEntry> OnJobDone(scoped_ptr<QueueEntry> queue_entry,
- FileError error);
-
- // Callback for job finishing with a GetResourceListCallback.
- void OnGetResourceListJobDone(
- scoped_ptr<QueueEntry> queue_entry,
- google_apis::GDataErrorCode error,
- scoped_ptr<google_apis::ResourceList> resource_list);
-
- // Callback for job finishing with a GetResourceEntryCallback.
- void OnGetResourceEntryJobDone(
- scoped_ptr<QueueEntry> queue_entry,
- google_apis::GDataErrorCode error,
- scoped_ptr<google_apis::ResourceEntry> entry);
-
- // Callback for job finishing with a GetAboutResourceCallback.
- void OnGetAboutResourceJobDone(
- scoped_ptr<QueueEntry> queue_entry,
- google_apis::GDataErrorCode error,
- scoped_ptr<google_apis::AboutResource> about_resource);
-
- // Callback for job finishing with a GetAccountMetadataCallback.
- void OnGetAccountMetadataJobDone(
- scoped_ptr<QueueEntry> queue_entry,
- google_apis::GDataErrorCode error,
- scoped_ptr<google_apis::AccountMetadata> account_metadata);
-
- // Callback for job finishing with a GetAppListCallback.
- void OnGetAppListJobDone(
- scoped_ptr<QueueEntry> queue_entry,
- google_apis::GDataErrorCode error,
- scoped_ptr<google_apis::AppList> app_list);
-
- // Callback for job finishing with a EntryActionCallback.
- void OnEntryActionJobDone(scoped_ptr<QueueEntry> queue_entry,
- google_apis::GDataErrorCode error);
-
- // Callback for job finishing with a DownloadActionCallback.
- void OnDownloadActionJobDone(scoped_ptr<QueueEntry> queue_entry,
- google_apis::GDataErrorCode error,
- const base::FilePath& temp_file);
-
- // Callback for job finishing with a UploadCompletionCallback.
- void OnUploadCompletionJobDone(
- scoped_ptr<QueueEntry> queue_entry,
- google_apis::DriveUploadError error,
- const base::FilePath& drive_path,
- const base::FilePath& file_path,
- scoped_ptr<google_apis::ResourceEntry> resource_entry);
-
- // Updates the progress status of the specified job.
- void UpdateProgress(JobID job_id, int64 progress, int64 total);
-
- // net::NetworkChangeNotifier::ConnectionTypeObserver override.
- virtual void OnConnectionTypeChanged(
- net::NetworkChangeNotifier::ConnectionType type) OVERRIDE;
-
- // Get the type of queue the specified job should be put in.
- QueueType GetJobQueueType(JobType type);
-
- // For testing only. Disables throttling so that testing is faster.
- void SetDisableThrottling(bool disable) { disable_throttling_ = disable; }
-
- // Notifies updates to observers.
- void NotifyJobAdded(const JobInfo& job_info);
- void NotifyJobDone(const JobInfo& job_info, FileError error);
- void NotifyJobUpdated(const JobInfo& job_info);
-
- // Number of jobs in flight for each queue.
- int jobs_running_[NUM_QUEUES];
-
- // The number of times operations have failed in a row, capped at
- // kMaxThrottleCount. This is used to calculate the delay before running the
- // next task.
- int throttle_count_;
-
- // Disables throttling for testing.
- bool disable_throttling_;
-
- // The queues of jobs.
- std::list<QueueEntry*> queue_[NUM_QUEUES];
-
- // The list of unfinished (= queued or running) job info indexed by job IDs.
- typedef IDMap<JobInfo, IDMapOwnPointer> JobIDMap;
- JobIDMap job_map_;
-
- // The list of observers for the scheduler.
- ObserverList<JobListObserver> observer_list_;
-
- google_apis::DriveServiceInterface* drive_service_;
- scoped_ptr<google_apis::DriveUploaderInterface> uploader_;
-
- Profile* profile_;
-
- // Note: This should remain the last member so it'll be destroyed and
- // invalidate its weak pointers before any other members are destroyed.
- base::WeakPtrFactory<DriveScheduler> weak_ptr_factory_;
- DISALLOW_COPY_AND_ASSIGN(DriveScheduler);
-};
-
-} // namespace drive
-
-#endif // CHROME_BROWSER_CHROMEOS_DRIVE_DRIVE_SCHEDULER_H_
« no previous file with comments | « chrome/browser/chromeos/drive/drive_file_system_unittest.cc ('k') | chrome/browser/chromeos/drive/drive_scheduler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698