| // 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 "chromiumos-wide-profiling/data_writer.h" |
| |
| #include <stdint.h> |
| |
| #include "base/logging.h" |
| |
| #include "chromiumos-wide-profiling/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 |