blob: 32a514ac341bcb55cf53bd54fe1d662c34af9459 [file] [log] [blame]
// 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.h"
#include "base/logging.h"
#include "sync/internal_api/public/attachments/attachment_util.h"
namespace syncer {
Attachment::~Attachment() {}
// Static.
Attachment Attachment::Create(
const scoped_refptr<base::RefCountedMemory>& data) {
uint32_t crc32c = ComputeCrc32c(data);
return CreateFromParts(AttachmentId::Create(data->size(), crc32c), data);
}
// Static.
Attachment Attachment::CreateFromParts(
const AttachmentId& id,
const scoped_refptr<base::RefCountedMemory>& data) {
return Attachment(id, data);
}
const AttachmentId& Attachment::GetId() const { return id_; }
const scoped_refptr<base::RefCountedMemory>& Attachment::GetData() const {
return data_;
}
uint32_t Attachment::GetCrc32c() const {
return id_.GetCrc32c();
}
Attachment::Attachment(const AttachmentId& id,
const scoped_refptr<base::RefCountedMemory>& data)
: id_(id), data_(data) {
DCHECK_EQ(id.GetSize(), data->size());
DCHECK(data.get());
}
} // namespace syncer