// Copyright 2022 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef MOJO_CORE_IPCZ_DRIVER_DATA_PIPE_H_ #define MOJO_CORE_IPCZ_DRIVER_DATA_PIPE_H_ #include <cstddef> #include <cstdint> #include <memory> #include <optional> #include <utility> #include "base/containers/span.h" #include "base/memory/scoped_refptr.h" #include "base/synchronization/lock.h" #include "mojo/core/ipcz_driver/object.h" #include "mojo/core/ipcz_driver/ring_buffer.h" #include "mojo/core/ipcz_driver/shared_buffer.h" #include "mojo/core/scoped_ipcz_handle.h" #include "mojo/public/c/system/data_pipe.h" #include "mojo/public/c/system/types.h" #include "third_party/ipcz/include/ipcz/ipcz.h" namespace mojo::core::ipcz_driver { class Transport; // DataPipe implements a Mojo data pipe producer or consumer endpoint by // wrapping a shared memory ring buffer and using ipcz portals to communicate // read and write quantities end-to-end. // // TODO(crbug.com/40058840): Once everything is transitioned to mojo-ipcz // this object (and builtin data pipe bindings support in general) can be // deprecated in favor of a mojom-based library implementation of data pipes, // built directly on ipcz portals. For now they're implemented as ipcz driver // objects so they can continue to be represented on the wire as a single Mojo // handle. class DataPipe : public Object<DataPipe> { … }; } // namespace mojo::core::ipcz_driver #endif // MOJO_CORE_IPCZ_DRIVER_DATA_PIPE_H_