local_change_processor.h revision 2385ea399aae016c0806a4f9ef3c9cfe3d2a39df
1// Copyright (c) 2012 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_LOCAL_CHANGE_PROCESSOR_H_
6#define CHROME_BROWSER_SYNC_FILE_SYSTEM_LOCAL_CHANGE_PROCESSOR_H_
7
8#include "base/callback_forward.h"
9#include "chrome/browser/sync_file_system/sync_callbacks.h"
10
11namespace fileapi {
12class FileSystemURL;
13}
14
15namespace sync_file_system {
16
17class FileChange;
18
19// Represents an interface to process one local change and applies
20// it to the remote server.
21// This interface is to be implemented/backed by RemoteSyncFileService.
22class LocalChangeProcessor {
23 public:
24  LocalChangeProcessor() {}
25  virtual ~LocalChangeProcessor() {}
26
27  // This is called to apply the local |change|. If the change type is
28  // ADD_OR_UPDATE for a file, |local_file_path| points to a local file
29  // path that contains the latest file image whose file metadata is
30  // |local_file_metadata|.
31  // When SYNC_STATUS_HAS_CONFLICT is returned the implementation should
32  // notify the backing RemoteFileSyncService of the existence of conflict
33  // (as the remote service is supposed to maintain a list of conflict files).
34  virtual void ApplyLocalChange(
35      const FileChange& change,
36      const base::FilePath& local_file_path,
37      const SyncFileMetadata& local_file_metadata,
38      const fileapi::FileSystemURL& url,
39      const SyncStatusCallback& callback) = 0;
40
41 private:
42  DISALLOW_COPY_AND_ASSIGN(LocalChangeProcessor);
43};
44
45}  // namespace sync_file_system
46
47#endif  // CHROME_BROWSER_SYNC_FILE_SYSTEM_LOCAL_CHANGE_PROCESSOR_H_
48