// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

library fuchsia.io2;

/// A node for streaming unstructured data.
/// No pipe-specific methods are provided by this protocol. The client should
/// access the pipe via the socket object returned from the `PipeInfo` member
/// in [`fuchsia.io2/Representation`].
protocol Pipe {
    compose Node;
};

/// The pipe representation of a node.
/// A pipe is a data streaming interface, commonly used for standard in/out.
/// There is no universal requirement as to if it is uni- or bi-directional.
/// The selection of this variant in [`Representation`] implies that the
/// connection speaks the [`fuchsia.io2/Pipe`] protocol.
table PipeInfo {
    /// The backing socket transport for the pipe.
    /// The rights on this socket should correspond to the rights on the
    /// node connection.
    1: handle<socket> socket;
};
