12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- // 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 "ipc/ipc_message.h"
- #include "mojo/public/interfaces/bindings/native_struct.mojom-forward.h"
- #include "third_party/abseil-cpp/absl/types/optional.h"
- namespace IPC {
- class COMPONENT_EXPORT(IPC_MOJOM) MessageView {
- public:
- MessageView();
- MessageView(
- base::span<const uint8_t> bytes,
- absl::optional<std::vector<mojo::native::SerializedHandlePtr>> handles);
- MessageView(MessageView&&);
- MessageView(const MessageView&) = delete;
- MessageView& operator=(const MessageView&) = delete;
- ~MessageView();
- MessageView& operator=(MessageView&&);
- base::span<const uint8_t> bytes() const { return bytes_; }
- absl::optional<std::vector<mojo::native::SerializedHandlePtr>> TakeHandles();
- private:
- base::span<const uint8_t> bytes_;
- absl::optional<std::vector<mojo::native::SerializedHandlePtr>> handles_;
- };
- } // namespace IPC
- #endif // IPC_MESSAGE_VIEW_H_
|