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

#ifndef IPC_MESSAGE_VIEW_H_
#define IPC_MESSAGE_VIEW_H_

#include <vector>

#include "base/component_export.h"
#include "base/containers/span.h"
#include "base/macros.h"
#include "ipc/ipc_message.h"
#include "mojo/public/cpp/base/big_buffer.h"
#include "mojo/public/interfaces/bindings/native_struct.mojom.h"

namespace IPC {

class COMPONENT_EXPORT(IPC_MOJOM) MessageView {
 public:
  MessageView();
  MessageView(
      const Message& message,
      base::Optional<std::vector<mojo::native::SerializedHandlePtr>> handles);
  MessageView(
      mojo_base::BigBufferView buffer_view,
      base::Optional<std::vector<mojo::native::SerializedHandlePtr>> handles);
  MessageView(MessageView&&);
  ~MessageView();

  MessageView& operator=(MessageView&&);

  const char* data() const {
    return reinterpret_cast<const char*>(buffer_view_.data().data());
  }

  uint32_t size() const {
    return static_cast<uint32_t>(buffer_view_.data().size());
  }

  mojo_base::BigBufferView TakeBufferView() { return std::move(buffer_view_); }

  base::Optional<std::vector<mojo::native::SerializedHandlePtr>> TakeHandles() {
    return std::move(handles_);
  }

 private:
  mojo_base::BigBufferView buffer_view_;
  base::Optional<std::vector<mojo::native::SerializedHandlePtr>> handles_;

  DISALLOW_COPY_AND_ASSIGN(MessageView);
};

}  // namespace IPC

#endif  // IPC_MESSAGE_VIEW_H_
