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