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

Side by Side Diff: chrome/browser/sync_file_system/remote_file_sync_service.h

Issue 11299008: Remote service state handling (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased Created 8 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_SYNC_FILE_SYSTEM_REMOTE_FILE_SYNC_SERVICE_H_ 5 #ifndef CHROME_BROWSER_SYNC_FILE_SYSTEM_REMOTE_FILE_SYNC_SERVICE_H_
6 #define CHROME_BROWSER_SYNC_FILE_SYSTEM_REMOTE_FILE_SYNC_SERVICE_H_ 6 #define CHROME_BROWSER_SYNC_FILE_SYSTEM_REMOTE_FILE_SYNC_SERVICE_H_
7 7
8 #include "base/basictypes.h" 8 #include "base/basictypes.h"
9 #include "webkit/fileapi/file_system_url.h" 9 #include "webkit/fileapi/file_system_url.h"
10 #include "webkit/fileapi/syncable/sync_callbacks.h" 10 #include "webkit/fileapi/syncable/sync_callbacks.h"
11 11
12 class GURL; 12 class GURL;
13 13
14 namespace sync_file_system { 14 namespace sync_file_system {
15 15
16 class RemoteChangeProcessor; 16 class RemoteChangeProcessor;
17 class LocalChangeProcessor; 17 class LocalChangeProcessor;
18 18
19 enum RemoteServiceState {
20 // Remote service is up and running, or has not seen any errors yet.
21 // The consumer of this service can make new requests while the
22 // service is in this state.
23 REMOTE_SERVICE_OK,
24
25 // Remote service is temporarily unavailable due to network,
26 // authentication or some other temporary failure.
27 // This state may be automatically resolved when the underlying
28 // network condition or service condition changes.
29 // The consumer of this service can still make new requests but
30 // they may fail (with recoverable error code).
31 REMOTE_SERVICE_TEMPORARY_UNAVAILABLE,
32
33 // Remote service is temporarily unavailable due to authentication failure.
34 // This state may be automatically resolved when the authentication token
35 // has been refreshed internally (e.g. when the user signed in etc).
36 // The consumer of this service can still make new requests but
37 // they may fail (with recoverable error code).
38 REMOTE_SERVICE_AUTHENTICATION_REQUIRED,
39
40 // Remote service is disabled due to unrecoverable errors, e.g.
41 // local database corruption.
42 // Any new requests will immediately fail when the service is in
43 // this state.
44 REMOTE_SERVICE_DISABLED,
45 };
46
19 // This class represents a backing service of the sync filesystem. 47 // This class represents a backing service of the sync filesystem.
20 // This also maintains conflict information, i.e. a list of conflicting files 48 // This also maintains conflict information, i.e. a list of conflicting files
21 // (at least in the current design). 49 // (at least in the current design).
22 // Owned by SyncFileSystemService. 50 // Owned by SyncFileSystemService.
23 class RemoteFileSyncService { 51 class RemoteFileSyncService {
24 public: 52 public:
25 class Observer { 53 class Observer {
26 public: 54 public:
27 Observer() {} 55 Observer() {}
28 virtual ~Observer() {} 56 virtual ~Observer() {}
29 57
30 // This is called when there're one or more remote changes available. 58 // This is called when there're one or more remote changes available.
31 // |pending_changes_hint| indicates the pending queue length to help sync 59 // |pending_changes_hint| indicates the pending queue length to help sync
32 // scheduling but the value may not be accurately reflect the real-time 60 // scheduling but the value may not be accurately reflect the real-time
33 // value. 61 // value.
34 virtual void OnRemoteChangeAvailable(int64 pending_changes_hint) = 0; 62 virtual void OnRemoteChangeAvailable(int64 pending_changes_hint) = 0;
35 63
36 // This is called when RemoteFileSyncService changes its status. 64 // This is called when RemoteFileSyncService updates its state.
37 virtual void OnRemoteSyncStatusChanged( 65 virtual void OnRemoteServiceStateUpdated(
38 fileapi::SyncStatusCode new_status) {} 66 RemoteServiceState state,
67 const std::string& description) {}
39 68
40 private: 69 private:
41 DISALLOW_COPY_AND_ASSIGN(Observer); 70 DISALLOW_COPY_AND_ASSIGN(Observer);
42 }; 71 };
43 72
44 RemoteFileSyncService() {} 73 RemoteFileSyncService() {}
45 virtual ~RemoteFileSyncService() {} 74 virtual ~RemoteFileSyncService() {}
46 75
47 virtual void AddObserver(Observer* observer) = 0; 76 virtual void AddObserver(Observer* observer) = 0;
48 virtual void RemoveObserver(Observer* observer) = 0; 77 virtual void RemoveObserver(Observer* observer) = 0;
49 78
50 // Registers |origin| to track remote side changes for the |origin|. 79 // Registers |origin| to track remote side changes for the |origin|.
51 // Upon completion, invokes |callback|. 80 // Upon completion, invokes |callback|.
81 // The caller may call this method again when the remote service state
82 // migrates to REMOTE_SERVICE_OK state if the error code returned via
83 // |callback| was retriable ones.
52 virtual void RegisterOriginForTrackingChanges( 84 virtual void RegisterOriginForTrackingChanges(
53 const GURL& origin, 85 const GURL& origin,
54 const fileapi::SyncStatusCallback& callback) = 0; 86 const fileapi::SyncStatusCallback& callback) = 0;
55 87
56 // Unregisters |origin| to track remote side changes for the |origin|. 88 // Unregisters |origin| to track remote side changes for the |origin|.
57 // Upon completion, invokes |callback|. 89 // Upon completion, invokes |callback|.
90 // The caller may call this method again when the remote service state
91 // migrates to REMOTE_SERVICE_OK state if the error code returned via
92 // |callback| was retriable ones.
58 virtual void UnregisterOriginForTrackingChanges( 93 virtual void UnregisterOriginForTrackingChanges(
59 const GURL& origin, 94 const GURL& origin,
60 const fileapi::SyncStatusCallback& callback) = 0; 95 const fileapi::SyncStatusCallback& callback) = 0;
61 96
62 // Called by the sync engine to process one remote change. 97 // Called by the sync engine to process one remote change.
63 // After a change is processed |callback| will be called (to return 98 // After a change is processed |callback| will be called (to return
64 // the control to the sync engine). 99 // the control to the sync engine).
65 virtual void ProcessRemoteChange( 100 virtual void ProcessRemoteChange(
66 RemoteChangeProcessor* processor, 101 RemoteChangeProcessor* processor,
67 const fileapi::SyncFileCallback& callback) = 0; 102 const fileapi::SyncFileCallback& callback) = 0;
(...skipping 12 matching lines...) Expand all
80 const fileapi::FileSystemURL& url, 115 const fileapi::FileSystemURL& url,
81 const fileapi::SyncFileMetadataCallback& callback) = 0; 116 const fileapi::SyncFileMetadataCallback& callback) = 0;
82 117
83 private: 118 private:
84 DISALLOW_COPY_AND_ASSIGN(RemoteFileSyncService); 119 DISALLOW_COPY_AND_ASSIGN(RemoteFileSyncService);
85 }; 120 };
86 121
87 } // namespace sync_file_system 122 } // namespace sync_file_system
88 123
89 #endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_REMOTE_FILE_SYNC_SERVICE_H_ 124 #endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_REMOTE_FILE_SYNC_SERVICE_H_
OLDNEW
« no previous file with comments | « chrome/browser/sync_file_system/drive_file_sync_util.cc ('k') | chrome/browser/sync_file_system/sync_event_observer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698