// Copyright 2015 The Chromium OS 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 "data_writer.h"
#include <stdint.h>
#include "base/logging.h"
#include "perf_data_utils.h"
namespace quipper {
bool DataWriter::WriteDataValue(const void* src, const size_t size,
const string& value_name) {
if (WriteData(src, size)) return true;
LOG(ERROR) << "Unable to write " << value_name << ". Requested " << size
<< " bytes, " << size_ - Tell() << " bytes remaining.";
return false;
}
bool DataWriter::WriteStringWithSizeToData(const string& src) {
uint32_t len = GetUint64AlignedStringLength(src);
if (!CanWriteSize(len + sizeof(len))) {
LOG(ERROR) << "Not enough space to write string.";
return false;
}
if (!WriteDataValue(&len, sizeof(len), "string length") ||
!WriteString(src, len)) {
LOG(ERROR) << "Failed to write string.";
return false;
}
return true;
}
} // namespace quipper