blob: da9b6f99f708d64f65c8260c32355cbbced70d01 [file] [log] [blame]
// 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 CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_SYNC_TASK_H_
#define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_SYNC_TASK_H_
#include "base/memory/scoped_ptr.h"
#include "base/memory/weak_ptr.h"
#include "chrome/browser/sync_file_system/sync_callbacks.h"
namespace sync_file_system {
namespace drive_backend {
class SyncTaskToken;
class SyncTask {
public:
SyncTask() : used_network_(false) {}
virtual ~SyncTask() {}
virtual void RunPreflight(scoped_ptr<SyncTaskToken> token) = 0;
bool used_network() { return used_network_; }
protected:
void set_used_network(bool used_network) {
used_network_ = used_network;
}
private:
bool used_network_;
DISALLOW_COPY_AND_ASSIGN(SyncTask);
};
class ExclusiveTask : public SyncTask {
public:
ExclusiveTask();
virtual ~ExclusiveTask();
virtual void RunPreflight(scoped_ptr<SyncTaskToken> token) OVERRIDE FINAL;
virtual void RunExclusive(const SyncStatusCallback& callback) = 0;
private:
base::WeakPtrFactory<ExclusiveTask> weak_ptr_factory_;
DISALLOW_COPY_AND_ASSIGN(ExclusiveTask);
};
} // namespace drive_backend
} // namespace sync_file_system
#endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_SYNC_TASK_H_