| 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 <stdint.h> |
| 9 |
| 8 #include <algorithm> | 10 #include <algorithm> |
| 9 #include <map> | 11 #include <map> |
| 10 #include <set> | 12 #include <set> |
| 11 #include <string> | 13 #include <string> |
| 12 | 14 |
| 13 #include "base/time/time.h" | 15 #include "base/time/time.h" |
| 14 #include "base/values.h" | 16 #include "base/values.h" |
| 15 #include "sync/base/sync_export.h" | 17 #include "sync/base/sync_export.h" |
| 16 #include "sync/internal_api/public/base/model_type.h" | 18 #include "sync/internal_api/public/base/model_type.h" |
| 17 #include "sync/internal_api/public/base/unique_position.h" | 19 #include "sync/internal_api/public/base/unique_position.h" |
| (...skipping 15 matching lines...) Expand all Loading... |
| 33 // - EntryKernel struct in this file | 35 // - EntryKernel struct in this file |
| 34 // - syncable_columns.h | 36 // - syncable_columns.h |
| 35 // - syncable_enum_conversions{.h,.cc,_unittest.cc} | 37 // - syncable_enum_conversions{.h,.cc,_unittest.cc} |
| 36 // - EntryKernel::EntryKernel(), EntryKernel::ToValue() in entry_kernel.cc | 38 // - EntryKernel::EntryKernel(), EntryKernel::ToValue() in entry_kernel.cc |
| 37 // - operator<< in Entry.cc | 39 // - operator<< in Entry.cc |
| 38 // - BindFields() and UnpackEntry() in directory_backing_store.cc | 40 // - BindFields() and UnpackEntry() in directory_backing_store.cc |
| 39 // - kCurrentDBVersion, DirectoryBackingStore::InitializeTables in | 41 // - kCurrentDBVersion, DirectoryBackingStore::InitializeTables in |
| 40 // directory_backing_store.cc | 42 // directory_backing_store.cc |
| 41 // - TestSimpleFieldsPreservedDuringSaveChanges in syncable_unittest.cc | 43 // - TestSimpleFieldsPreservedDuringSaveChanges in syncable_unittest.cc |
| 42 | 44 |
| 43 static const int64 kInvalidMetaHandle = 0; | 45 static const int64_t kInvalidMetaHandle = 0; |
| 44 | 46 |
| 45 enum { | 47 enum { |
| 46 BEGIN_FIELDS = 0, | 48 BEGIN_FIELDS = 0, |
| 47 INT64_FIELDS_BEGIN = BEGIN_FIELDS | 49 INT64_FIELDS_BEGIN = BEGIN_FIELDS |
| 48 }; | 50 }; |
| 49 | 51 |
| 50 enum MetahandleField { | 52 enum MetahandleField { |
| 51 // Primary key into the table. Keep this as a handle to the meta entry | 53 // Primary key into the table. Keep this as a handle to the meta entry |
| 52 // across transactions. | 54 // across transactions. |
| 53 META_HANDLE = INT64_FIELDS_BEGIN | 55 META_HANDLE = INT64_FIELDS_BEGIN |
| (...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 197 }; | 199 }; |
| 198 | 200 |
| 199 struct SYNC_EXPORT EntryKernel { | 201 struct SYNC_EXPORT EntryKernel { |
| 200 private: | 202 private: |
| 201 typedef syncer::ProtoValuePtr<sync_pb::EntitySpecifics> EntitySpecificsPtr; | 203 typedef syncer::ProtoValuePtr<sync_pb::EntitySpecifics> EntitySpecificsPtr; |
| 202 typedef syncer::ProtoValuePtr<sync_pb::AttachmentMetadata> | 204 typedef syncer::ProtoValuePtr<sync_pb::AttachmentMetadata> |
| 203 AttachmentMetadataPtr; | 205 AttachmentMetadataPtr; |
| 204 | 206 |
| 205 std::string string_fields[STRING_FIELDS_COUNT]; | 207 std::string string_fields[STRING_FIELDS_COUNT]; |
| 206 EntitySpecificsPtr specifics_fields[PROTO_FIELDS_COUNT]; | 208 EntitySpecificsPtr specifics_fields[PROTO_FIELDS_COUNT]; |
| 207 int64 int64_fields[INT64_FIELDS_COUNT]; | 209 int64_t int64_fields[INT64_FIELDS_COUNT]; |
| 208 base::Time time_fields[TIME_FIELDS_COUNT]; | 210 base::Time time_fields[TIME_FIELDS_COUNT]; |
| 209 Id id_fields[ID_FIELDS_COUNT]; | 211 Id id_fields[ID_FIELDS_COUNT]; |
| 210 UniquePosition unique_position_fields[UNIQUE_POSITION_FIELDS_COUNT]; | 212 UniquePosition unique_position_fields[UNIQUE_POSITION_FIELDS_COUNT]; |
| 211 AttachmentMetadataPtr | 213 AttachmentMetadataPtr |
| 212 attachment_metadata_fields[ATTACHMENT_METADATA_FIELDS_COUNT]; | 214 attachment_metadata_fields[ATTACHMENT_METADATA_FIELDS_COUNT]; |
| 213 std::bitset<BIT_FIELDS_COUNT> bit_fields; | 215 std::bitset<BIT_FIELDS_COUNT> bit_fields; |
| 214 std::bitset<BIT_TEMPS_COUNT> bit_temps; | 216 std::bitset<BIT_TEMPS_COUNT> bit_temps; |
| 215 | 217 |
| 216 friend std::ostream& operator<<(std::ostream& s, const EntryKernel& e); | 218 friend std::ostream& operator<<(std::ostream& s, const EntryKernel& e); |
| 217 | 219 |
| (...skipping 21 matching lines...) Expand all Loading... |
| 239 dirty_index->erase(ref(META_HANDLE)); | 241 dirty_index->erase(ref(META_HANDLE)); |
| 240 } | 242 } |
| 241 dirty_ = false; | 243 dirty_ = false; |
| 242 } | 244 } |
| 243 | 245 |
| 244 inline bool is_dirty() const { | 246 inline bool is_dirty() const { |
| 245 return dirty_; | 247 return dirty_; |
| 246 } | 248 } |
| 247 | 249 |
| 248 // Setters. | 250 // Setters. |
| 249 inline void put(MetahandleField field, int64 value) { | 251 inline void put(MetahandleField field, int64_t value) { |
| 250 int64_fields[field - INT64_FIELDS_BEGIN] = value; | 252 int64_fields[field - INT64_FIELDS_BEGIN] = value; |
| 251 } | 253 } |
| 252 inline void put(Int64Field field, int64 value) { | 254 inline void put(Int64Field field, int64_t value) { |
| 253 int64_fields[field - INT64_FIELDS_BEGIN] = value; | 255 int64_fields[field - INT64_FIELDS_BEGIN] = value; |
| 254 } | 256 } |
| 255 inline void put(TimeField field, const base::Time& value) { | 257 inline void put(TimeField field, const base::Time& value) { |
| 256 // Round-trip to proto time format and back so that we have | 258 // Round-trip to proto time format and back so that we have |
| 257 // consistent time resolutions (ms). | 259 // consistent time resolutions (ms). |
| 258 time_fields[field - TIME_FIELDS_BEGIN] = | 260 time_fields[field - TIME_FIELDS_BEGIN] = |
| 259 ProtoTimeToTime(TimeToProtoTime(value)); | 261 ProtoTimeToTime(TimeToProtoTime(value)); |
| 260 } | 262 } |
| 261 inline void put(IdField field, const Id& value) { | 263 inline void put(IdField field, const Id& value) { |
| 262 id_fields[field - ID_FIELDS_BEGIN] = value; | 264 id_fields[field - ID_FIELDS_BEGIN] = value; |
| 263 } | 265 } |
| 264 inline void put(BaseVersion field, int64 value) { | 266 inline void put(BaseVersion field, int64_t value) { |
| 265 int64_fields[field - INT64_FIELDS_BEGIN] = value; | 267 int64_fields[field - INT64_FIELDS_BEGIN] = value; |
| 266 } | 268 } |
| 267 inline void put(IndexedBitField field, bool value) { | 269 inline void put(IndexedBitField field, bool value) { |
| 268 bit_fields[field - BIT_FIELDS_BEGIN] = value; | 270 bit_fields[field - BIT_FIELDS_BEGIN] = value; |
| 269 } | 271 } |
| 270 inline void put(IsDelField field, bool value) { | 272 inline void put(IsDelField field, bool value) { |
| 271 bit_fields[field - BIT_FIELDS_BEGIN] = value; | 273 bit_fields[field - BIT_FIELDS_BEGIN] = value; |
| 272 } | 274 } |
| 273 inline void put(BitField field, bool value) { | 275 inline void put(BitField field, bool value) { |
| 274 bit_fields[field - BIT_FIELDS_BEGIN] = value; | 276 bit_fields[field - BIT_FIELDS_BEGIN] = value; |
| (...skipping 10 matching lines...) Expand all Loading... |
| 285 inline void put(AttachmentMetadataField field, | 287 inline void put(AttachmentMetadataField field, |
| 286 const sync_pb::AttachmentMetadata& value) { | 288 const sync_pb::AttachmentMetadata& value) { |
| 287 attachment_metadata_fields[field - ATTACHMENT_METADATA_FIELDS_BEGIN] | 289 attachment_metadata_fields[field - ATTACHMENT_METADATA_FIELDS_BEGIN] |
| 288 .set_value(value); | 290 .set_value(value); |
| 289 } | 291 } |
| 290 inline void put(BitTemp field, bool value) { | 292 inline void put(BitTemp field, bool value) { |
| 291 bit_temps[field - BIT_TEMPS_BEGIN] = value; | 293 bit_temps[field - BIT_TEMPS_BEGIN] = value; |
| 292 } | 294 } |
| 293 | 295 |
| 294 // Const ref getters. | 296 // Const ref getters. |
| 295 inline int64 ref(MetahandleField field) const { | 297 inline int64_t ref(MetahandleField field) const { |
| 296 return int64_fields[field - INT64_FIELDS_BEGIN]; | 298 return int64_fields[field - INT64_FIELDS_BEGIN]; |
| 297 } | 299 } |
| 298 inline int64 ref(Int64Field field) const { | 300 inline int64_t ref(Int64Field field) const { |
| 299 return int64_fields[field - INT64_FIELDS_BEGIN]; | 301 return int64_fields[field - INT64_FIELDS_BEGIN]; |
| 300 } | 302 } |
| 301 inline const base::Time& ref(TimeField field) const { | 303 inline const base::Time& ref(TimeField field) const { |
| 302 return time_fields[field - TIME_FIELDS_BEGIN]; | 304 return time_fields[field - TIME_FIELDS_BEGIN]; |
| 303 } | 305 } |
| 304 inline const Id& ref(IdField field) const { | 306 inline const Id& ref(IdField field) const { |
| 305 return id_fields[field - ID_FIELDS_BEGIN]; | 307 return id_fields[field - ID_FIELDS_BEGIN]; |
| 306 } | 308 } |
| 307 inline int64 ref(BaseVersion field) const { | 309 inline int64_t ref(BaseVersion field) const { |
| 308 return int64_fields[field - INT64_FIELDS_BEGIN]; | 310 return int64_fields[field - INT64_FIELDS_BEGIN]; |
| 309 } | 311 } |
| 310 inline bool ref(IndexedBitField field) const { | 312 inline bool ref(IndexedBitField field) const { |
| 311 return bit_fields[field - BIT_FIELDS_BEGIN]; | 313 return bit_fields[field - BIT_FIELDS_BEGIN]; |
| 312 } | 314 } |
| 313 inline bool ref(IsDelField field) const { | 315 inline bool ref(IsDelField field) const { |
| 314 return bit_fields[field - BIT_FIELDS_BEGIN]; | 316 return bit_fields[field - BIT_FIELDS_BEGIN]; |
| 315 } | 317 } |
| 316 inline bool ref(BitField field) const { | 318 inline bool ref(BitField field) const { |
| 317 return bit_fields[field - BIT_FIELDS_BEGIN]; | 319 return bit_fields[field - BIT_FIELDS_BEGIN]; |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 395 } | 397 } |
| 396 }; | 398 }; |
| 397 | 399 |
| 398 typedef std::set<const EntryKernel*, EntryKernelLessByMetaHandle> | 400 typedef std::set<const EntryKernel*, EntryKernelLessByMetaHandle> |
| 399 EntryKernelSet; | 401 EntryKernelSet; |
| 400 | 402 |
| 401 struct EntryKernelMutation { | 403 struct EntryKernelMutation { |
| 402 EntryKernel original, mutated; | 404 EntryKernel original, mutated; |
| 403 }; | 405 }; |
| 404 | 406 |
| 405 typedef std::map<int64, EntryKernelMutation> EntryKernelMutationMap; | 407 typedef std::map<int64_t, EntryKernelMutation> EntryKernelMutationMap; |
| 406 | 408 |
| 407 typedef Immutable<EntryKernelMutationMap> ImmutableEntryKernelMutationMap; | 409 typedef Immutable<EntryKernelMutationMap> ImmutableEntryKernelMutationMap; |
| 408 | 410 |
| 409 // Caller owns the return value. | 411 // Caller owns the return value. |
| 410 base::DictionaryValue* EntryKernelMutationToValue( | 412 base::DictionaryValue* EntryKernelMutationToValue( |
| 411 const EntryKernelMutation& mutation); | 413 const EntryKernelMutation& mutation); |
| 412 | 414 |
| 413 // Caller owns the return value. | 415 // Caller owns the return value. |
| 414 base::ListValue* EntryKernelMutationMapToValue( | 416 base::ListValue* EntryKernelMutationMapToValue( |
| 415 const EntryKernelMutationMap& mutations); | 417 const EntryKernelMutationMap& mutations); |
| 416 | 418 |
| 417 std::ostream& operator<<(std::ostream& os, const EntryKernel& entry_kernel); | 419 std::ostream& operator<<(std::ostream& os, const EntryKernel& entry_kernel); |
| 418 | 420 |
| 419 } // namespace syncable | 421 } // namespace syncable |
| 420 } // namespace syncer | 422 } // namespace syncer |
| 421 | 423 |
| 422 #endif // SYNC_SYNCABLE_ENTRY_KERNEL_H_ | 424 #endif // SYNC_SYNCABLE_ENTRY_KERNEL_H_ |
| OLD | NEW |