// 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
|