### posix::basic_stream_descriptor

Provides stream-oriented descriptor functionality.

    template<
        typename Executor = any_io_executor>
    class basic_stream_descriptor :
      public posix::basic_descriptor< Executor >

##### Types

Name | Description
--- | ---
rebind_executor | Rebinds the descriptor type to another executor.
bytes_readable | IO control command to get the amount of data that can be read without blocking.
executor_type | The type of the executor associated with the object.
lowest_layer_type | A descriptor is always the lowest layer.
native_handle_type | The native representation of a descriptor.
wait_type | Wait types.

##### Member Functions

Name | Description
--- | ---
assign | Assign an existing native descriptor to the descriptor.
async_read_some | Start an asynchronous read.
async_wait | Asynchronously wait for the descriptor to become ready to read, ready to write, or to have pending error conditions.
async_write_some | Start an asynchronous write.
basic_stream_descriptor [constructor] | Construct a stream descriptor without opening it. — Construct a stream descriptor on an existing native descriptor. — Move-construct a stream descriptor from another.
cancel | Cancel all asynchronous operations associated with the descriptor.
close | Close the descriptor.
get_executor | Get the executor associated with the object.
io_control | Perform an IO control command on the descriptor.
is_open | Determine whether the descriptor is open.
lowest_layer | Get a reference to the lowest layer. — Get a const reference to the lowest layer.
native_handle | Get the native descriptor representation.
native_non_blocking | Gets the non-blocking mode of the native descriptor implementation. — Sets the non-blocking mode of the native descriptor implementation.
non_blocking | Gets the non-blocking mode of the descriptor. — Sets the non-blocking mode of the descriptor.
operator= | Move-assign a stream descriptor from another.
read_some | Read some data from the descriptor.
release | Release ownership of the native descriptor implementation.
wait | Wait for the descriptor to become ready to read, ready to write, or to have pending error conditions.
write_some | Write some data to the descriptor.

The `posix::basic_stream_descriptor` class template provides asynchronous and blocking stream-oriented descriptor functionality.

##### Thread Safety

Distinct objects: Safe.

Shared objects: Unsafe.

Synchronous `read_some` and `write_some` operations are thread safe with respect to each other, if the underlying operating system calls are also thread safe. This means that it is permitted to perform concurrent calls to these synchronous operations on a single descriptor object. Other synchronous operations, such as `close`, are not thread safe.

##### Requirements

Header: `asio/posix/basic_stream_descriptor.hpp`

Convenience header: `asio.hpp`