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 #ifndef SYNC_ENGINE_SYNCER_PROTO_UTIL_H_ | 5 #ifndef SYNC_ENGINE_SYNCER_PROTO_UTIL_H_ |
6 #define SYNC_ENGINE_SYNCER_PROTO_UTIL_H_ | 6 #define SYNC_ENGINE_SYNCER_PROTO_UTIL_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/gtest_prod_util.h" | 10 #include "base/gtest_prod_util.h" |
11 #include "base/time.h" | 11 #include "base/time.h" |
| 12 #include "sync/base/sync_export.h" |
12 #include "sync/internal_api/public/base/model_type.h" | 13 #include "sync/internal_api/public/base/model_type.h" |
13 #include "sync/internal_api/public/util/syncer_error.h" | 14 #include "sync/internal_api/public/util/syncer_error.h" |
14 #include "sync/sessions/sync_session.h" | 15 #include "sync/sessions/sync_session.h" |
15 #include "sync/syncable/blob.h" | 16 #include "sync/syncable/blob.h" |
16 | 17 |
17 namespace sync_pb { | 18 namespace sync_pb { |
18 class ClientToServerMessage; | 19 class ClientToServerMessage; |
19 class ClientToServerResponse; | 20 class ClientToServerResponse; |
| 21 class ClientToServerResponse_Error; |
20 class CommitResponse_EntryResponse; | 22 class CommitResponse_EntryResponse; |
21 class EntitySpecifics; | 23 class EntitySpecifics; |
22 class SyncEntity; | 24 class SyncEntity; |
23 } | 25 } |
24 | 26 |
25 namespace syncer { | 27 namespace syncer { |
26 | 28 |
27 class ThrottledDataTypeTracker; | 29 class ThrottledDataTypeTracker; |
28 class ServerConnectionManager; | 30 class ServerConnectionManager; |
29 | 31 |
30 namespace sessions { | 32 namespace sessions { |
31 class SyncProtocolError; | 33 class SyncProtocolError; |
32 class SyncSessionContext; | 34 class SyncSessionContext; |
33 } | 35 } |
34 | 36 |
35 namespace syncable { | 37 namespace syncable { |
36 class Directory; | 38 class Directory; |
37 class Entry; | 39 class Entry; |
38 } | 40 } |
39 | 41 |
| 42 // Returns the types to migrate from the data in |response|. |
| 43 SYNC_EXPORT_PRIVATE ModelTypeSet GetTypesToMigrate( |
| 44 const sync_pb::ClientToServerResponse& response); |
| 45 |
| 46 // Builds a SyncProtocolError from the data in |error|. |
| 47 SYNC_EXPORT_PRIVATE SyncProtocolError ConvertErrorPBToLocalType( |
| 48 const sync_pb::ClientToServerResponse_Error& error); |
| 49 |
40 class SyncerProtoUtil { | 50 class SyncerProtoUtil { |
41 public: | 51 public: |
42 // Posts the given message and fills the buffer with the returned value. | 52 // Posts the given message and fills the buffer with the returned value. |
43 // Returns true on success. Also handles store birthday verification: will | 53 // Returns true on success. Also handles store birthday verification: will |
44 // produce a SyncError if the birthday is incorrect. | 54 // produce a SyncError if the birthday is incorrect. |
45 // NOTE: This will add all fields that must be sent on every request, which | 55 // NOTE: This will add all fields that must be sent on every request, which |
46 // includes store birthday, protocol version, client chips, api keys, etc. | 56 // includes store birthday, protocol version, client chips, api keys, etc. |
47 static SyncerError PostClientToServerMessage( | 57 static SyncerError PostClientToServerMessage( |
48 sync_pb::ClientToServerMessage* msg, | 58 sync_pb::ClientToServerMessage* msg, |
49 sync_pb::ClientToServerResponse* response, | 59 sync_pb::ClientToServerResponse* response, |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
107 // Set the protocol version field in the outgoing message. | 117 // Set the protocol version field in the outgoing message. |
108 static void SetProtocolVersion(sync_pb::ClientToServerMessage* msg); | 118 static void SetProtocolVersion(sync_pb::ClientToServerMessage* msg); |
109 | 119 |
110 private: | 120 private: |
111 SyncerProtoUtil() {} | 121 SyncerProtoUtil() {} |
112 | 122 |
113 // Helper functions for PostClientToServerMessage. | 123 // Helper functions for PostClientToServerMessage. |
114 | 124 |
115 // Verifies the store birthday, alerting/resetting as appropriate if there's a | 125 // Verifies the store birthday, alerting/resetting as appropriate if there's a |
116 // mismatch. Return false if the syncer should be stuck. | 126 // mismatch. Return false if the syncer should be stuck. |
117 static bool VerifyResponseBirthday(syncable::Directory* dir, | 127 static bool VerifyResponseBirthday( |
118 const sync_pb::ClientToServerResponse* response); | 128 const sync_pb::ClientToServerResponse& response, |
119 | 129 syncable::Directory* dir); |
120 // Builds and sends a SyncEngineEvent to begin migration for types (specified | |
121 // in notification). | |
122 static void HandleMigrationDoneResponse( | |
123 const sync_pb::ClientToServerResponse* response, | |
124 sessions::SyncSession* session); | |
125 | 130 |
126 // Post the message using the scm, and do some processing on the returned | 131 // Post the message using the scm, and do some processing on the returned |
127 // headers. Decode the server response. | 132 // headers. Decode the server response. |
128 static bool PostAndProcessHeaders(ServerConnectionManager* scm, | 133 static bool PostAndProcessHeaders(ServerConnectionManager* scm, |
129 sessions::SyncSession* session, | 134 sessions::SyncSession* session, |
130 const sync_pb::ClientToServerMessage& msg, | 135 const sync_pb::ClientToServerMessage& msg, |
131 sync_pb::ClientToServerResponse* response); | 136 sync_pb::ClientToServerResponse* response); |
132 | 137 |
133 static base::TimeDelta GetThrottleDelay( | 138 static base::TimeDelta GetThrottleDelay( |
134 const sync_pb::ClientToServerResponse& response); | 139 const sync_pb::ClientToServerResponse& response); |
(...skipping 10 matching lines...) Expand all Loading... |
145 FRIEND_TEST_ALL_PREFIXES(SyncerProtoUtilTest, VerifyResponseBirthday); | 150 FRIEND_TEST_ALL_PREFIXES(SyncerProtoUtilTest, VerifyResponseBirthday); |
146 FRIEND_TEST_ALL_PREFIXES(SyncerProtoUtilTest, HandleThrottlingNoDatatypes); | 151 FRIEND_TEST_ALL_PREFIXES(SyncerProtoUtilTest, HandleThrottlingNoDatatypes); |
147 FRIEND_TEST_ALL_PREFIXES(SyncerProtoUtilTest, HandleThrottlingWithDatatypes); | 152 FRIEND_TEST_ALL_PREFIXES(SyncerProtoUtilTest, HandleThrottlingWithDatatypes); |
148 | 153 |
149 DISALLOW_COPY_AND_ASSIGN(SyncerProtoUtil); | 154 DISALLOW_COPY_AND_ASSIGN(SyncerProtoUtil); |
150 }; | 155 }; |
151 | 156 |
152 } // namespace syncer | 157 } // namespace syncer |
153 | 158 |
154 #endif // SYNC_ENGINE_SYNCER_PROTO_UTIL_H_ | 159 #endif // SYNC_ENGINE_SYNCER_PROTO_UTIL_H_ |
OLD | NEW |