### posix::basic_descriptor

Provides POSIX descriptor functionality.

    template<
        typename DescriptorService>
    class basic_descriptor :
      public basic_io_object< DescriptorService >,
      public posix::descriptor_base

##### Types

Name | Description
--- | ---
bytes_readable | IO control command to get the amount of data that can be read without blocking.
implementation_type | The underlying implementation type of I/O object.
lowest_layer_type | A basic_descriptor is always the lowest layer.
native_type | The native representation of a descriptor.
non_blocking_io | IO control command to set the blocking mode of the descriptor.
service_type | The type of the service that will be used to provide I/O operations.

##### Member Functions

Name | Description
--- | ---
assign | Assign an existing native descriptor to the descriptor.
basic_descriptor | Construct a basic_descriptor without opening it.
cancel | Cancel all asynchronous operations associated with the descriptor.
close | Close the descriptor.
get_io_service | Get the io_service associated with the object.
io_control | Perform an IO control command on the descriptor.
io_service | (Deprecated: use get_io_service().) Get the io_service associated with the object.
is_open | Determine whether the descriptor is open.
lowest_layer | Get a reference to the lowest layer.
native | Get the native descriptor representation.

##### Protected Member Functions

Name | Description
--- | ---
~basic_descriptor | Protected destructor to prevent deletion through this type.

##### Protected Data Members

Name | Description
--- | ---
implementation | The underlying implementation of the I/O object.
service | The service associated with the I/O object.

The posix::basic_descriptor class template provides the ability to wrap a POSIX descriptor.

##### Thread Safety

Distinct objects: Safe.

Shared objects: Unsafe.