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

using zx;

/// 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.
type PipeInfo = resource table {
    /// The backing socket transport for the pipe.
    /// The rights on this socket should correspond to the rights on the
    /// node connection.
    1: socket zx.handle:SOCKET;
};
