OLD | NEW |
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 // Utility functions manipulating syncable::Entries, intended for use by the | 5 // Utility functions manipulating syncable::Entries, intended for use by the |
6 // syncer. | 6 // syncer. |
7 | 7 |
8 #ifndef SYNC_ENGINE_SYNCER_UTIL_H_ | 8 #ifndef COMPONENTS_SYNC_ENGINE_IMPL_SYNCER_UTIL_H_ |
9 #define SYNC_ENGINE_SYNCER_UTIL_H_ | 9 #define COMPONENTS_SYNC_ENGINE_IMPL_SYNCER_UTIL_H_ |
10 | 10 |
11 #include <stdint.h> | 11 #include <stdint.h> |
12 | 12 |
13 #include <set> | 13 #include <set> |
14 #include <string> | 14 #include <string> |
15 #include <vector> | 15 #include <vector> |
16 | 16 |
17 #include "sync/base/sync_export.h" | 17 #include "components/sync/base/sync_export.h" |
18 #include "sync/engine/syncer.h" | 18 #include "components/sync/engine_impl/syncer.h" |
19 #include "sync/engine/syncer_types.h" | 19 #include "components/sync/engine_impl/syncer_types.h" |
20 #include "sync/syncable/entry_kernel.h" | 20 #include "components/sync/syncable/entry_kernel.h" |
21 #include "sync/syncable/metahandle_set.h" | 21 #include "components/sync/syncable/metahandle_set.h" |
22 #include "sync/syncable/mutable_entry.h" | 22 #include "components/sync/syncable/mutable_entry.h" |
23 #include "sync/syncable/syncable_id.h" | 23 #include "components/sync/syncable/syncable_id.h" |
24 | 24 |
25 namespace sync_pb { | 25 namespace sync_pb { |
26 class SyncEntity; | 26 class SyncEntity; |
27 } // namespace sync_pb | 27 } // namespace sync_pb |
28 | 28 |
29 namespace syncer { | 29 namespace syncer { |
30 | 30 |
31 namespace syncable { | 31 namespace syncable { |
32 class BaseTransaction; | 32 class BaseTransaction; |
33 class ModelNeutralWriteTransaction; | 33 class ModelNeutralWriteTransaction; |
34 } // namespace syncable | 34 } // namespace syncable |
35 | 35 |
36 class Cryptographer; | 36 class Cryptographer; |
37 | 37 |
38 // If the server sent down a client-tagged entry, or an entry whose | 38 // If the server sent down a client-tagged entry, or an entry whose |
39 // commit response was lost, it is necessary to update a local entry | 39 // commit response was lost, it is necessary to update a local entry |
40 // with an ID that doesn't match the ID of the update. Here, we | 40 // with an ID that doesn't match the ID of the update. Here, we |
41 // find the ID of such an entry, if it exists. This function may | 41 // find the ID of such an entry, if it exists. This function may |
42 // determine that |server_entry| should be dropped; if so, it returns | 42 // determine that |server_entry| should be dropped; if so, it returns |
43 // the null ID -- callers must handle this case. When update application | 43 // the null ID -- callers must handle this case. When update application |
44 // should proceed normally with a new local entry, this function will | 44 // should proceed normally with a new local entry, this function will |
45 // return server_entry.id(); the caller must create an entry with that | 45 // return server_entry.id(); the caller must create an entry with that |
46 // ID. This function does not alter the database. | 46 // ID. This function does not alter the database. |
47 syncable::Id FindLocalIdToUpdate( | 47 syncable::Id FindLocalIdToUpdate(syncable::BaseTransaction* trans, |
48 syncable::BaseTransaction* trans, | 48 const sync_pb::SyncEntity& server_entry); |
49 const sync_pb::SyncEntity& server_entry); | |
50 | 49 |
51 UpdateAttemptResponse AttemptToUpdateEntry( | 50 UpdateAttemptResponse AttemptToUpdateEntry( |
52 syncable::WriteTransaction* const trans, | 51 syncable::WriteTransaction* const trans, |
53 syncable::MutableEntry* const entry, | 52 syncable::MutableEntry* const entry, |
54 Cryptographer* cryptographer); | 53 Cryptographer* cryptographer); |
55 | 54 |
56 // Returns the most accurate position information available in this update. It | 55 // Returns the most accurate position information available in this update. It |
57 // prefers to use the unique_position() field, but will fall back to using the | 56 // prefers to use the unique_position() field, but will fall back to using the |
58 // int64_t-based position_in_parent if necessary. | 57 // int64_t-based position_in_parent if necessary. |
59 // | 58 // |
60 // The suffix parameter is the unique bookmark tag for the item being updated. | 59 // The suffix parameter is the unique bookmark tag for the item being updated. |
61 // | 60 // |
62 // Will return an invalid position if no valid position can be constructed, or | 61 // Will return an invalid position if no valid position can be constructed, or |
63 // if this type does not support positioning. | 62 // if this type does not support positioning. |
64 SYNC_EXPORT UniquePosition GetUpdatePosition(const sync_pb::SyncEntity& update, | 63 SYNC_EXPORT UniquePosition GetUpdatePosition(const sync_pb::SyncEntity& update, |
65 const std::string& suffix); | 64 const std::string& suffix); |
66 | 65 |
67 // Fetch the cache_guid and item_id-based unique bookmark tag from an update. | 66 // Fetch the cache_guid and item_id-based unique bookmark tag from an update. |
68 // Will return an empty string if someting unexpected happens. | 67 // Will return an empty string if someting unexpected happens. |
69 SYNC_EXPORT std::string GetUniqueBookmarkTagFromUpdate( | 68 SYNC_EXPORT std::string GetUniqueBookmarkTagFromUpdate( |
70 const sync_pb::SyncEntity& update); | 69 const sync_pb::SyncEntity& update); |
71 | 70 |
72 // Pass in name to avoid redundant UTF8 conversion. | 71 // Pass in name to avoid redundant UTF8 conversion. |
73 SYNC_EXPORT void UpdateServerFieldsFromUpdate( | 72 SYNC_EXPORT void UpdateServerFieldsFromUpdate( |
74 syncable::ModelNeutralMutableEntry* local_entry, | 73 syncable::ModelNeutralMutableEntry* local_entry, |
75 const sync_pb::SyncEntity& server_entry, | 74 const sync_pb::SyncEntity& server_entry, |
76 const std::string& name); | 75 const std::string& name); |
77 | 76 |
78 // Creates a new Entry iff no Entry exists with the given id. | 77 // Creates a new Entry iff no Entry exists with the given id. |
79 void CreateNewEntry(syncable::ModelNeutralWriteTransaction *trans, | 78 void CreateNewEntry(syncable::ModelNeutralWriteTransaction* trans, |
80 const syncable::Id& id); | 79 const syncable::Id& id); |
81 | 80 |
82 // This function is called on an entry when we can update the user-facing data | 81 // This function is called on an entry when we can update the user-facing data |
83 // from the server data. | 82 // from the server data. |
84 void UpdateLocalDataFromServerData(syncable::WriteTransaction* trans, | 83 void UpdateLocalDataFromServerData(syncable::WriteTransaction* trans, |
85 syncable::MutableEntry* entry); | 84 syncable::MutableEntry* entry); |
86 | 85 |
87 VerifyCommitResult ValidateCommitEntry(syncable::Entry* entry); | 86 VerifyCommitResult ValidateCommitEntry(syncable::Entry* entry); |
88 | 87 |
89 VerifyResult VerifyNewEntry(const sync_pb::SyncEntity& update, | 88 VerifyResult VerifyNewEntry(const sync_pb::SyncEntity& update, |
90 syncable::Entry* target, | 89 syncable::Entry* target, |
91 const bool deleted); | 90 const bool deleted); |
92 | 91 |
93 // Assumes we have an existing entry; check here for updates that break | 92 // Assumes we have an existing entry; check here for updates that break |
94 // consistency rules. | 93 // consistency rules. |
95 VerifyResult VerifyUpdateConsistency( | 94 VerifyResult VerifyUpdateConsistency( |
96 syncable::ModelNeutralWriteTransaction* trans, | 95 syncable::ModelNeutralWriteTransaction* trans, |
97 const sync_pb::SyncEntity& update, | 96 const sync_pb::SyncEntity& update, |
98 const bool deleted, | 97 const bool deleted, |
99 const bool is_directory, | 98 const bool is_directory, |
100 ModelType model_type, | 99 ModelType model_type, |
101 syncable::ModelNeutralMutableEntry* target); | 100 syncable::ModelNeutralMutableEntry* target); |
102 | 101 |
103 // Assumes we have an existing entry; verify an update that seems to be | 102 // Assumes we have an existing entry; verify an update that seems to be |
104 // expressing an 'undelete' | 103 // expressing an 'undelete' |
105 VerifyResult VerifyUndelete(syncable::ModelNeutralWriteTransaction* trans, | 104 VerifyResult VerifyUndelete(syncable::ModelNeutralWriteTransaction* trans, |
106 const sync_pb::SyncEntity& update, | 105 const sync_pb::SyncEntity& update, |
107 syncable::ModelNeutralMutableEntry* target); | 106 syncable::ModelNeutralMutableEntry* target); |
108 | 107 |
109 void MarkDeletedChildrenSynced( | 108 void MarkDeletedChildrenSynced(syncable::Directory* dir, |
110 syncable::Directory* dir, | 109 syncable::BaseWriteTransaction* trans, |
111 syncable::BaseWriteTransaction* trans, | 110 std::set<syncable::Id>* deleted_folders); |
112 std::set<syncable::Id>* deleted_folders); | |
113 | 111 |
114 } // namespace syncer | 112 } // namespace syncer |
115 | 113 |
116 #endif // SYNC_ENGINE_SYNCER_UTIL_H_ | 114 #endif // COMPONENTS_SYNC_ENGINE_IMPL_SYNCER_UTIL_H_ |
OLD | NEW |