| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "sync/api/attachments/attachment_id.h" |
| |
| #include "base/logging.h" |
| #include "sync/internal_api/public/base/attachment_id_proto.h" |
| #include "sync/protocol/sync.pb.h" |
| |
| namespace syncer { |
| |
| void AttachmentId::ImmutableAttachmentIdProtoTraits::InitializeWrapper( |
| Wrapper* wrapper) { |
| *wrapper = new sync_pb::AttachmentIdProto(); |
| } |
| |
| void AttachmentId::ImmutableAttachmentIdProtoTraits::DestroyWrapper( |
| Wrapper* wrapper) { |
| delete *wrapper; |
| } |
| |
| const sync_pb::AttachmentIdProto& |
| AttachmentId::ImmutableAttachmentIdProtoTraits::Unwrap(const Wrapper& wrapper) { |
| return *wrapper; |
| } |
| |
| sync_pb::AttachmentIdProto* |
| AttachmentId::ImmutableAttachmentIdProtoTraits::UnwrapMutable( |
| Wrapper* wrapper) { |
| return *wrapper; |
| } |
| |
| void AttachmentId::ImmutableAttachmentIdProtoTraits::Swap( |
| sync_pb::AttachmentIdProto* t1, |
| sync_pb::AttachmentIdProto* t2) { |
| t1->Swap(t2); |
| } |
| |
| AttachmentId::~AttachmentId() {} |
| |
| bool AttachmentId::operator==(const AttachmentId& other) const { |
| return proto_.Get().unique_id() == other.proto_.Get().unique_id(); |
| } |
| |
| bool AttachmentId::operator!=(const AttachmentId& other) const { |
| return !operator==(other); |
| } |
| |
| bool AttachmentId::operator<(const AttachmentId& other) const { |
| return proto_.Get().unique_id() < other.proto_.Get().unique_id(); |
| } |
| |
| // Static. |
| AttachmentId AttachmentId::Create(size_t size, uint32_t crc32c) { |
| sync_pb::AttachmentIdProto proto = CreateAttachmentIdProto(size, crc32c); |
| return AttachmentId(&proto); |
| } |
| |
| // Static. |
| AttachmentId AttachmentId::CreateFromProto( |
| const sync_pb::AttachmentIdProto& proto) { |
| sync_pb::AttachmentIdProto copy_of_proto(proto); |
| return AttachmentId(©_of_proto); |
| } |
| |
| const sync_pb::AttachmentIdProto& AttachmentId::GetProto() const { |
| return proto_.Get(); |
| } |
| |
| AttachmentId::AttachmentId(sync_pb::AttachmentIdProto* proto) |
| : proto_(proto) {} |
| |
| size_t AttachmentId::GetSize() const { |
| return proto_.Get().size_bytes(); |
| } |
| |
| uint32_t AttachmentId::GetCrc32c() const { |
| return proto_.Get().crc32c(); |
| } |
| |
| } // namespace syncer |