commit_and_get_updates_types.h 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  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
  3. // found in the LICENSE file.
  4. #ifndef COMPONENTS_SYNC_ENGINE_COMMIT_AND_GET_UPDATES_TYPES_H_
  5. #define COMPONENTS_SYNC_ENGINE_COMMIT_AND_GET_UPDATES_TYPES_H_
  6. #include <stdint.h>
  7. #include <memory>
  8. #include <string>
  9. #include <vector>
  10. #include "base/time/time.h"
  11. #include "components/sync/base/client_tag_hash.h"
  12. #include "components/sync/protocol/entity_data.h"
  13. #include "components/sync/protocol/sync.pb.h"
  14. namespace syncer {
  15. static const int64_t kUncommittedVersion = -1;
  16. enum class SyncCommitError {
  17. kNetworkError,
  18. kAuthError,
  19. kServerError,
  20. kBadServerResponse
  21. };
  22. struct CommitRequestData {
  23. CommitRequestData();
  24. CommitRequestData(const CommitRequestData&) = delete;
  25. CommitRequestData& operator=(const CommitRequestData&) = delete;
  26. ~CommitRequestData();
  27. // Fields sent to the sync server.
  28. std::unique_ptr<EntityData> entity;
  29. int64_t base_version = 0;
  30. // Fields not sent to the sync server. However, they are kept to be sent back
  31. // to the processor in the response.
  32. // Strictly incrementing number for in-progress commits.
  33. // More information about its meaning can be found in comments in the files
  34. // that make use of this struct.
  35. int64_t sequence_number = 0;
  36. std::string specifics_hash;
  37. base::Time unsynced_time;
  38. };
  39. // Represents a successfully committed item.
  40. struct CommitResponseData {
  41. CommitResponseData();
  42. CommitResponseData(const CommitResponseData& other);
  43. CommitResponseData(CommitResponseData&&);
  44. CommitResponseData& operator=(const CommitResponseData&);
  45. CommitResponseData& operator=(CommitResponseData&&);
  46. ~CommitResponseData();
  47. std::string id;
  48. ClientTagHash client_tag_hash;
  49. int64_t sequence_number = 0;
  50. int64_t response_version = 0;
  51. std::string specifics_hash;
  52. base::Time unsynced_time;
  53. };
  54. // Represents an item, which wasn't committed due to an error.
  55. struct FailedCommitResponseData {
  56. FailedCommitResponseData();
  57. FailedCommitResponseData(const FailedCommitResponseData& other);
  58. FailedCommitResponseData(FailedCommitResponseData&&);
  59. FailedCommitResponseData& operator=(const FailedCommitResponseData&);
  60. FailedCommitResponseData& operator=(FailedCommitResponseData&&);
  61. ~FailedCommitResponseData();
  62. ClientTagHash client_tag_hash;
  63. sync_pb::CommitResponse::ResponseType response_type =
  64. sync_pb::CommitResponse::TRANSIENT_ERROR;
  65. sync_pb::CommitResponse::EntryResponse::DatatypeSpecificError
  66. datatype_specific_error;
  67. };
  68. struct UpdateResponseData {
  69. UpdateResponseData();
  70. UpdateResponseData(UpdateResponseData&&) = default;
  71. UpdateResponseData& operator=(UpdateResponseData&&) = default;
  72. ~UpdateResponseData();
  73. UpdateResponseData(const UpdateResponseData&) = delete;
  74. UpdateResponseData& operator=(const UpdateResponseData&) = delete;
  75. EntityData entity;
  76. int64_t response_version = 0;
  77. std::string encryption_key_name;
  78. };
  79. using CommitRequestDataList = std::vector<std::unique_ptr<CommitRequestData>>;
  80. using CommitResponseDataList = std::vector<CommitResponseData>;
  81. using FailedCommitResponseDataList = std::vector<FailedCommitResponseData>;
  82. using UpdateResponseDataList = std::vector<UpdateResponseData>;
  83. // Returns the estimate of dynamically allocated memory in bytes.
  84. size_t EstimateMemoryUsage(const CommitRequestData& value);
  85. size_t EstimateMemoryUsage(const UpdateResponseData& value);
  86. } // namespace syncer
  87. #endif // COMPONENTS_SYNC_ENGINE_COMMIT_AND_GET_UPDATES_TYPES_H_