sync_engine_context.h revision 46d4c2bc3267f3f028f39e7e311b0f89aba2e4fd
1// Copyright 2013 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 CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_SYNC_ENGINE_CONTEXT_H_
6#define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_SYNC_ENGINE_CONTEXT_H_
7
8#include "base/basictypes.h"
9#include "base/memory/ref_counted.h"
10#include "base/memory/scoped_ptr.h"
11#include "base/memory/weak_ptr.h"
12#include "base/sequence_checker.h"
13
14namespace base {
15class SequencedTaskRunner;
16class SingleThreadTaskRunner;
17}
18
19namespace drive {
20class DriveServiceInterface;
21class DriveUploaderInterface;
22}
23
24namespace sync_file_system {
25
26class RemoteChangeProcessor;
27class TaskLogger;
28
29namespace drive_backend {
30
31class MetadataDatabase;
32
33class SyncEngineContext {
34 public:
35  SyncEngineContext(
36      scoped_ptr<drive::DriveServiceInterface> drive_service,
37      scoped_ptr<drive::DriveUploaderInterface> drive_uploader,
38      TaskLogger* task_logger,
39      base::SingleThreadTaskRunner* ui_task_runner,
40      base::SequencedTaskRunner* worker_task_runner,
41      base::SequencedTaskRunner* file_task_runner);
42  ~SyncEngineContext();
43
44  void SetMetadataDatabase(scoped_ptr<MetadataDatabase> metadata_database);
45  void SetRemoteChangeProcessor(
46      RemoteChangeProcessor* remote_change_processor);
47
48  drive::DriveServiceInterface* GetDriveService();
49  drive::DriveUploaderInterface* GetDriveUploader();
50  base::WeakPtr<TaskLogger> GetTaskLogger();
51  MetadataDatabase* GetMetadataDatabase();
52  RemoteChangeProcessor* GetRemoteChangeProcessor();
53  base::SingleThreadTaskRunner* GetUITaskRunner();
54  base::SequencedTaskRunner* GetWorkerTaskRunner();
55  base::SequencedTaskRunner* GetFileTaskRunner();
56
57  scoped_ptr<MetadataDatabase> PassMetadataDatabase();
58
59  void DetachFromSequence();
60
61 private:
62  scoped_ptr<drive::DriveServiceInterface> drive_service_;
63  scoped_ptr<drive::DriveUploaderInterface> drive_uploader_;
64  base::WeakPtr<TaskLogger> task_logger_;
65  RemoteChangeProcessor* remote_change_processor_;  // Not owned.
66
67  scoped_ptr<MetadataDatabase> metadata_database_;
68  scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner_;
69  scoped_refptr<base::SequencedTaskRunner> worker_task_runner_;
70  scoped_refptr<base::SequencedTaskRunner> file_task_runner_;
71
72  base::SequenceChecker sequence_checker_;
73
74  DISALLOW_COPY_AND_ASSIGN(SyncEngineContext);
75};
76
77}  // namespace drive_backend
78}  // namespace sync_file_system
79
80#endif  // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_SYNC_ENGINE_CONTEXT_H_
81