| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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_SYNCABLE_ENTRY_KERNEL_H_ | 5 #ifndef SYNC_SYNCABLE_ENTRY_KERNEL_H_ |
| 6 #define SYNC_SYNCABLE_ENTRY_KERNEL_H_ | 6 #define SYNC_SYNCABLE_ENTRY_KERNEL_H_ |
| 7 | 7 |
| 8 #include <set> | 8 #include <set> |
| 9 | 9 |
| 10 #include "base/time/time.h" | 10 #include "base/time/time.h" |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 | 24 |
| 25 namespace syncable { | 25 namespace syncable { |
| 26 | 26 |
| 27 // Things you need to update if you change any of the fields below: | 27 // Things you need to update if you change any of the fields below: |
| 28 // - EntryKernel struct in this file | 28 // - EntryKernel struct in this file |
| 29 // - syncable_columns.h | 29 // - syncable_columns.h |
| 30 // - syncable_enum_conversions{.h,.cc,_unittest.cc} | 30 // - syncable_enum_conversions{.h,.cc,_unittest.cc} |
| 31 // - EntryKernel::EntryKernel(), EntryKernel::ToValue() in entry_kernel.cc | 31 // - EntryKernel::EntryKernel(), EntryKernel::ToValue() in entry_kernel.cc |
| 32 // - operator<< in Entry.cc | 32 // - operator<< in Entry.cc |
| 33 // - BindFields() and UnpackEntry() in directory_backing_store.cc | 33 // - BindFields() and UnpackEntry() in directory_backing_store.cc |
| 34 // - kCurrentDBVersion, DirectoryBackingStore::InitializeTables in |
| 35 // directory_backing_store.cc |
| 34 // - TestSimpleFieldsPreservedDuringSaveChanges in syncable_unittest.cc | 36 // - TestSimpleFieldsPreservedDuringSaveChanges in syncable_unittest.cc |
| 35 | 37 |
| 36 static const int64 kInvalidMetaHandle = 0; | 38 static const int64 kInvalidMetaHandle = 0; |
| 37 | 39 |
| 38 enum { | 40 enum { |
| 39 BEGIN_FIELDS = 0, | 41 BEGIN_FIELDS = 0, |
| 40 INT64_FIELDS_BEGIN = BEGIN_FIELDS | 42 INT64_FIELDS_BEGIN = BEGIN_FIELDS |
| 41 }; | 43 }; |
| 42 | 44 |
| 43 enum MetahandleField { | 45 enum MetahandleField { |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 149 | 151 |
| 150 enum UniquePositionField { | 152 enum UniquePositionField { |
| 151 SERVER_UNIQUE_POSITION = UNIQUE_POSITION_FIELDS_BEGIN, | 153 SERVER_UNIQUE_POSITION = UNIQUE_POSITION_FIELDS_BEGIN, |
| 152 UNIQUE_POSITION, | 154 UNIQUE_POSITION, |
| 153 UNIQUE_POSITION_FIELDS_END | 155 UNIQUE_POSITION_FIELDS_END |
| 154 }; | 156 }; |
| 155 | 157 |
| 156 enum { | 158 enum { |
| 157 UNIQUE_POSITION_FIELDS_COUNT = | 159 UNIQUE_POSITION_FIELDS_COUNT = |
| 158 UNIQUE_POSITION_FIELDS_END - UNIQUE_POSITION_FIELDS_BEGIN, | 160 UNIQUE_POSITION_FIELDS_END - UNIQUE_POSITION_FIELDS_BEGIN, |
| 159 FIELD_COUNT = UNIQUE_POSITION_FIELDS_END - BEGIN_FIELDS, | 161 ATTACHMENT_METADATA_FIELDS_BEGIN = UNIQUE_POSITION_FIELDS_END |
| 162 }; |
| 163 |
| 164 enum AttachmentMetadataField { |
| 165 ATTACHMENT_METADATA = ATTACHMENT_METADATA_FIELDS_BEGIN, |
| 166 ATTACHMENT_METADATA_FIELDS_END |
| 167 }; |
| 168 |
| 169 enum { |
| 170 ATTACHMENT_METADATA_FIELDS_COUNT = |
| 171 ATTACHMENT_METADATA_FIELDS_END - ATTACHMENT_METADATA_FIELDS_BEGIN, |
| 172 FIELD_COUNT = ATTACHMENT_METADATA_FIELDS_END - BEGIN_FIELDS, |
| 160 // Past this point we have temporaries, stored in memory only. | 173 // Past this point we have temporaries, stored in memory only. |
| 161 BEGIN_TEMPS = UNIQUE_POSITION_FIELDS_END, | 174 BEGIN_TEMPS = ATTACHMENT_METADATA_FIELDS_END, |
| 162 BIT_TEMPS_BEGIN = BEGIN_TEMPS, | 175 BIT_TEMPS_BEGIN = BEGIN_TEMPS, |
| 163 }; | 176 }; |
| 164 | 177 |
| 165 enum BitTemp { | 178 enum BitTemp { |
| 166 // Not to be confused with IS_UNSYNCED, this bit is used to detect local | 179 // Not to be confused with IS_UNSYNCED, this bit is used to detect local |
| 167 // changes to items that happen during the server Commit operation. | 180 // changes to items that happen during the server Commit operation. |
| 168 SYNCING = BIT_TEMPS_BEGIN, | 181 SYNCING = BIT_TEMPS_BEGIN, |
| 169 BIT_TEMPS_END, | 182 BIT_TEMPS_END, |
| 170 }; | 183 }; |
| 171 | 184 |
| 172 enum { | 185 enum { |
| 173 BIT_TEMPS_COUNT = BIT_TEMPS_END - BIT_TEMPS_BEGIN | 186 BIT_TEMPS_COUNT = BIT_TEMPS_END - BIT_TEMPS_BEGIN |
| 174 }; | 187 }; |
| 175 | 188 |
| 176 | 189 |
| 177 | 190 |
| 178 struct SYNC_EXPORT_PRIVATE EntryKernel { | 191 struct SYNC_EXPORT_PRIVATE EntryKernel { |
| 179 private: | 192 private: |
| 180 std::string string_fields[STRING_FIELDS_COUNT]; | 193 std::string string_fields[STRING_FIELDS_COUNT]; |
| 181 sync_pb::EntitySpecifics specifics_fields[PROTO_FIELDS_COUNT]; | 194 sync_pb::EntitySpecifics specifics_fields[PROTO_FIELDS_COUNT]; |
| 182 int64 int64_fields[INT64_FIELDS_COUNT]; | 195 int64 int64_fields[INT64_FIELDS_COUNT]; |
| 183 base::Time time_fields[TIME_FIELDS_COUNT]; | 196 base::Time time_fields[TIME_FIELDS_COUNT]; |
| 184 Id id_fields[ID_FIELDS_COUNT]; | 197 Id id_fields[ID_FIELDS_COUNT]; |
| 185 UniquePosition unique_position_fields[UNIQUE_POSITION_FIELDS_COUNT]; | 198 UniquePosition unique_position_fields[UNIQUE_POSITION_FIELDS_COUNT]; |
| 199 sync_pb::AttachmentMetadata |
| 200 attachment_metadata_fields[ATTACHMENT_METADATA_FIELDS_COUNT]; |
| 186 std::bitset<BIT_FIELDS_COUNT> bit_fields; | 201 std::bitset<BIT_FIELDS_COUNT> bit_fields; |
| 187 std::bitset<BIT_TEMPS_COUNT> bit_temps; | 202 std::bitset<BIT_TEMPS_COUNT> bit_temps; |
| 188 | 203 |
| 189 public: | 204 public: |
| 190 EntryKernel(); | 205 EntryKernel(); |
| 191 ~EntryKernel(); | 206 ~EntryKernel(); |
| 192 | 207 |
| 193 // Set the dirty bit, and optionally add this entry's metahandle to | 208 // Set the dirty bit, and optionally add this entry's metahandle to |
| 194 // a provided index on dirty bits in |dirty_index|. Parameter may be null, | 209 // a provided index on dirty bits in |dirty_index|. Parameter may be null, |
| 195 // and will result only in setting the dirty bit of this entry. | 210 // and will result only in setting the dirty bit of this entry. |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 246 } | 261 } |
| 247 inline void put(StringField field, const std::string& value) { | 262 inline void put(StringField field, const std::string& value) { |
| 248 string_fields[field - STRING_FIELDS_BEGIN] = value; | 263 string_fields[field - STRING_FIELDS_BEGIN] = value; |
| 249 } | 264 } |
| 250 inline void put(ProtoField field, const sync_pb::EntitySpecifics& value) { | 265 inline void put(ProtoField field, const sync_pb::EntitySpecifics& value) { |
| 251 specifics_fields[field - PROTO_FIELDS_BEGIN].CopyFrom(value); | 266 specifics_fields[field - PROTO_FIELDS_BEGIN].CopyFrom(value); |
| 252 } | 267 } |
| 253 inline void put(UniquePositionField field, const UniquePosition& value) { | 268 inline void put(UniquePositionField field, const UniquePosition& value) { |
| 254 unique_position_fields[field - UNIQUE_POSITION_FIELDS_BEGIN] = value; | 269 unique_position_fields[field - UNIQUE_POSITION_FIELDS_BEGIN] = value; |
| 255 } | 270 } |
| 271 inline void put(AttachmentMetadataField field, |
| 272 const sync_pb::AttachmentMetadata& value) { |
| 273 attachment_metadata_fields[field - ATTACHMENT_METADATA_FIELDS_BEGIN] = |
| 274 value; |
| 275 } |
| 256 inline void put(BitTemp field, bool value) { | 276 inline void put(BitTemp field, bool value) { |
| 257 bit_temps[field - BIT_TEMPS_BEGIN] = value; | 277 bit_temps[field - BIT_TEMPS_BEGIN] = value; |
| 258 } | 278 } |
| 259 | 279 |
| 260 // Const ref getters. | 280 // Const ref getters. |
| 261 inline int64 ref(MetahandleField field) const { | 281 inline int64 ref(MetahandleField field) const { |
| 262 return int64_fields[field - INT64_FIELDS_BEGIN]; | 282 return int64_fields[field - INT64_FIELDS_BEGIN]; |
| 263 } | 283 } |
| 264 inline int64 ref(Int64Field field) const { | 284 inline int64 ref(Int64Field field) const { |
| 265 return int64_fields[field - INT64_FIELDS_BEGIN]; | 285 return int64_fields[field - INT64_FIELDS_BEGIN]; |
| (...skipping 18 matching lines...) Expand all Loading... |
| 284 } | 304 } |
| 285 inline const std::string& ref(StringField field) const { | 305 inline const std::string& ref(StringField field) const { |
| 286 return string_fields[field - STRING_FIELDS_BEGIN]; | 306 return string_fields[field - STRING_FIELDS_BEGIN]; |
| 287 } | 307 } |
| 288 inline const sync_pb::EntitySpecifics& ref(ProtoField field) const { | 308 inline const sync_pb::EntitySpecifics& ref(ProtoField field) const { |
| 289 return specifics_fields[field - PROTO_FIELDS_BEGIN]; | 309 return specifics_fields[field - PROTO_FIELDS_BEGIN]; |
| 290 } | 310 } |
| 291 inline const UniquePosition& ref(UniquePositionField field) const { | 311 inline const UniquePosition& ref(UniquePositionField field) const { |
| 292 return unique_position_fields[field - UNIQUE_POSITION_FIELDS_BEGIN]; | 312 return unique_position_fields[field - UNIQUE_POSITION_FIELDS_BEGIN]; |
| 293 } | 313 } |
| 314 inline const sync_pb::AttachmentMetadata& ref( |
| 315 AttachmentMetadataField field) const { |
| 316 return attachment_metadata_fields[field - ATTACHMENT_METADATA_FIELDS_BEGIN]; |
| 317 } |
| 294 inline bool ref(BitTemp field) const { | 318 inline bool ref(BitTemp field) const { |
| 295 return bit_temps[field - BIT_TEMPS_BEGIN]; | 319 return bit_temps[field - BIT_TEMPS_BEGIN]; |
| 296 } | 320 } |
| 297 | 321 |
| 298 // Non-const, mutable ref getters for object types only. | 322 // Non-const, mutable ref getters for object types only. |
| 299 inline std::string& mutable_ref(StringField field) { | 323 inline std::string& mutable_ref(StringField field) { |
| 300 return string_fields[field - STRING_FIELDS_BEGIN]; | 324 return string_fields[field - STRING_FIELDS_BEGIN]; |
| 301 } | 325 } |
| 302 inline sync_pb::EntitySpecifics& mutable_ref(ProtoField field) { | 326 inline sync_pb::EntitySpecifics& mutable_ref(ProtoField field) { |
| 303 return specifics_fields[field - PROTO_FIELDS_BEGIN]; | 327 return specifics_fields[field - PROTO_FIELDS_BEGIN]; |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 349 const EntryKernelMutation& mutation); | 373 const EntryKernelMutation& mutation); |
| 350 | 374 |
| 351 // Caller owns the return value. | 375 // Caller owns the return value. |
| 352 base::ListValue* EntryKernelMutationMapToValue( | 376 base::ListValue* EntryKernelMutationMapToValue( |
| 353 const EntryKernelMutationMap& mutations); | 377 const EntryKernelMutationMap& mutations); |
| 354 | 378 |
| 355 } // namespace syncable | 379 } // namespace syncable |
| 356 } // namespace syncer | 380 } // namespace syncer |
| 357 | 381 |
| 358 #endif // SYNC_SYNCABLE_ENTRY_KERNEL_H_ | 382 #endif // SYNC_SYNCABLE_ENTRY_KERNEL_H_ |
| OLD | NEW |