OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 SYNC_ENGINE_MODEL_TYPE_ENTITY_H_ | 5 #ifndef SYNC_ENGINE_MODEL_TYPE_ENTITY_H_ |
6 #define SYNC_ENGINE_MODEL_TYPE_ENTITY_H_ | 6 #define SYNC_ENGINE_MODEL_TYPE_ENTITY_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
(...skipping 28 matching lines...) Expand all Loading... |
39 | 39 |
40 // Construct an instance representing an item newly received from the server. | 40 // Construct an instance representing an item newly received from the server. |
41 static scoped_ptr<ModelTypeEntity> FromServerUpdate( | 41 static scoped_ptr<ModelTypeEntity> FromServerUpdate( |
42 const std::string& id, | 42 const std::string& id, |
43 const std::string& client_tag_hash, | 43 const std::string& client_tag_hash, |
44 const std::string& non_unique_name, | 44 const std::string& non_unique_name, |
45 int64 version, | 45 int64 version, |
46 const sync_pb::EntitySpecifics& specifics, | 46 const sync_pb::EntitySpecifics& specifics, |
47 bool deleted, | 47 bool deleted, |
48 base::Time ctime, | 48 base::Time ctime, |
49 base::Time mtime, | 49 base::Time mtime); |
50 const std::string& encryption_key_name); | |
51 | 50 |
52 // TODO(rlarocque): Implement FromDisk constructor when we implement storage. | 51 // TODO(rlarocque): Implement FromDisk constructor when we implement storage. |
53 | 52 |
54 ~ModelTypeEntity(); | 53 ~ModelTypeEntity(); |
55 | 54 |
56 // Returns true if this data is out of sync with local storage. | 55 // Returns true if this data is out of sync with local storage. |
57 bool IsWriteRequired() const; | 56 bool IsWriteRequired() const; |
58 | 57 |
59 // Returns true if this data is out of sync with the server. | 58 // Returns true if this data is out of sync with the server. |
60 // A commit may or may not be in progress at this time. | 59 // A commit may or may not be in progress at this time. |
(...skipping 12 matching lines...) Expand all Loading... |
73 // Returns true if the specified update version conflicts with local changes. | 72 // Returns true if the specified update version conflicts with local changes. |
74 bool UpdateIsInConflict(int64 update_version) const; | 73 bool UpdateIsInConflict(int64 update_version) const; |
75 | 74 |
76 // Applies an update from the sync server. | 75 // Applies an update from the sync server. |
77 // | 76 // |
78 // Overrides any local changes. Check UpdateIsInConflict() before calling | 77 // Overrides any local changes. Check UpdateIsInConflict() before calling |
79 // this function if you want to handle conflicts differently. | 78 // this function if you want to handle conflicts differently. |
80 void ApplyUpdateFromServer(int64 update_version, | 79 void ApplyUpdateFromServer(int64 update_version, |
81 bool deleted, | 80 bool deleted, |
82 const sync_pb::EntitySpecifics& specifics, | 81 const sync_pb::EntitySpecifics& specifics, |
83 base::Time mtime, | 82 base::Time mtime); |
84 const std::string& encryption_key_name); | |
85 | 83 |
86 // Applies a local change to this item. | 84 // Applies a local change to this item. |
87 void MakeLocalChange(const sync_pb::EntitySpecifics& specifics); | 85 void MakeLocalChange(const sync_pb::EntitySpecifics& specifics); |
88 | 86 |
89 // Schedule a commit if the |name| does not match this item's last known | |
90 // encryption key. The worker that performs the commit is expected to | |
91 // encrypt the item using the latest available key. | |
92 void UpdateDesiredEncryptionKey(const std::string& name); | |
93 | |
94 // Applies a local deletion to this item. | 87 // Applies a local deletion to this item. |
95 void Delete(); | 88 void Delete(); |
96 | 89 |
97 // Initializes a message representing this item's uncommitted state | 90 // Initializes a message representing this item's uncommitted state |
98 // to be forwarded to the sync server for committing. | 91 // to be forwarded to the sync server for committing. |
99 void InitializeCommitRequestData(CommitRequestData* request) const; | 92 void InitializeCommitRequestData(CommitRequestData* request) const; |
100 | 93 |
101 // Notes that the current version of this item has been queued for commit. | 94 // Notes that the current version of this item has been queued for commit. |
102 void SetCommitRequestInProgress(); | 95 void SetCommitRequestInProgress(); |
103 | 96 |
104 // Receives a successful commit response. | 97 // Receives a successful commit response. |
105 // | 98 // |
106 // Sucssful commit responses can overwrite an item's ID. | 99 // Sucssful commit responses can overwrite an item's ID. |
107 // | 100 // |
108 // Note that the receipt of a successful commit response does not necessarily | 101 // Note that the receipt of a successful commit response does not necessarily |
109 // unset IsUnsynced(). If many local changes occur in quick succession, it's | 102 // unset IsUnsynced(). If many local changes occur in quick succession, it's |
110 // possible that the committed item was already out of date by the time it | 103 // possible that the committed item was already out of date by the time it |
111 // reached the server. | 104 // reached the server. |
112 void ReceiveCommitResponse(const std::string& id, | 105 void ReceiveCommitResponse(const std::string& id, |
113 int64 sequence_number, | 106 int64 sequence_number, |
114 int64 response_version, | 107 int64 response_version); |
115 const std::string& encryption_key_name); | |
116 | 108 |
117 // Clears any in-memory sync state associated with outstanding commits. | 109 // Clears any in-memory sync state associated with outstanding commits. |
118 void ClearTransientSyncState(); | 110 void ClearTransientSyncState(); |
119 | 111 |
120 // Clears all sync state. Invoked when a user signs out. | 112 // Clears all sync state. Invoked when a user signs out. |
121 void ClearSyncState(); | 113 void ClearSyncState(); |
122 | 114 |
123 private: | 115 private: |
124 ModelTypeEntity(int64 sequence_number, | 116 ModelTypeEntity(int64 sequence_number, |
125 int64 commit_requested_sequence_number, | 117 int64 commit_requested_sequence_number, |
126 int64 acked_sequence_number, | 118 int64 acked_sequence_number, |
127 int64 base_version, | 119 int64 base_version, |
128 bool is_dirty, | 120 bool is_dirty, |
129 const std::string& id, | 121 const std::string& id, |
130 const std::string& client_tag_hash, | 122 const std::string& client_tag_hash, |
131 const std::string& non_unique_name, | 123 const std::string& non_unique_name, |
132 const sync_pb::EntitySpecifics& specifics, | 124 const sync_pb::EntitySpecifics& specifics, |
133 bool deleted, | 125 bool deleted, |
134 base::Time ctime, | 126 base::Time ctime, |
135 base::Time mtime, | 127 base::Time mtime); |
136 const std::string& encryption_key_name); | |
137 | 128 |
138 // A sequence number used to track in-progress commits. Each local change | 129 // A sequence number used to track in-progress commits. Each local change |
139 // increments this number. | 130 // increments this number. |
140 int64 sequence_number_; | 131 int64 sequence_number_; |
141 | 132 |
142 // The sequence number of the last item sent to the sync thread. | 133 // The sequence number of the last item sent to the sync thread. |
143 int64 commit_requested_sequence_number_; | 134 int64 commit_requested_sequence_number_; |
144 | 135 |
145 // The sequence number of the last item known to be successfully committed. | 136 // The sequence number of the last item known to be successfully committed. |
146 int64 acked_sequence_number_; | 137 int64 acked_sequence_number_; |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
187 | 178 |
188 // Whether or not the item is deleted. The |specifics_| field may be empty | 179 // Whether or not the item is deleted. The |specifics_| field may be empty |
189 // if this flag is true. | 180 // if this flag is true. |
190 bool deleted_; | 181 bool deleted_; |
191 | 182 |
192 // Entity creation and modification timestamps. | 183 // Entity creation and modification timestamps. |
193 // Assigned by the client and synced by the server, though the server usually | 184 // Assigned by the client and synced by the server, though the server usually |
194 // doesn't bother to inspect their values. | 185 // doesn't bother to inspect their values. |
195 base::Time ctime_; | 186 base::Time ctime_; |
196 base::Time mtime_; | 187 base::Time mtime_; |
197 | |
198 // The name of the encryption key used to encrypt this item on the server. | |
199 // Empty when no encryption is in use. | |
200 std::string encryption_key_name_; | |
201 }; | 188 }; |
202 | 189 |
203 } // namespace syncer | 190 } // namespace syncer |
204 | 191 |
205 #endif // SYNC_ENGINE_MODEL_TYPE_ENTITY_H_ | 192 #endif // SYNC_ENGINE_MODEL_TYPE_ENTITY_H_ |
OLD | NEW |