// Copyright 2018 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 "services/tracing/public/cpp/perfetto/shared_memory.h"

#include <utility>

#include "third_party/perfetto/include/perfetto/tracing/core/shared_memory.h"

namespace tracing {

std::unique_ptr<perfetto::SharedMemory>
MojoSharedMemory::Factory::CreateSharedMemory(size_t size) {
  return std::make_unique<MojoSharedMemory>(size);
}

MojoSharedMemory::MojoSharedMemory(size_t size) {
  shared_buffer_ = mojo::SharedBufferHandle::Create(size);
  mapping_ = shared_buffer_->Map(size);
  DCHECK(mapping_);
}

MojoSharedMemory::MojoSharedMemory(mojo::ScopedSharedBufferHandle shared_memory)
    : shared_buffer_(std::move(shared_memory)) {
  mapping_ = shared_buffer_->Map(shared_buffer_->GetSize());
  DCHECK(mapping_);
}

MojoSharedMemory::~MojoSharedMemory() = default;

mojo::ScopedSharedBufferHandle MojoSharedMemory::Clone() {
  return shared_buffer_->Clone(
      mojo::SharedBufferHandle::AccessMode::READ_WRITE);
}

void* MojoSharedMemory::start() const {
  return mapping_.get();
}

size_t MojoSharedMemory::size() const {
  return shared_buffer_->GetSize();
}

}  // namespace tracing
