# Class Uq_transfer.output_async_mplex

    class output_async_mplex : ?onclose:[ `Ignore | `Write_eof ] -> ?onshutdown:onshutdown_out_spec -> ?buffer_size:int -> Uq_engines.multiplex_controller -> async_out_channel_engine

Creates an asynchronous output channel writing to the multiplex controller (see also `output_async_descr` for the corresponding class writing to a single descriptor).

`onclose`: What to do when the `close_out` method is invoked. Defaults to ``Ignore`. ``Write_eof` means to write the EOF marker. Anyway, after doing the close action, the multiplex controller is shutdown.

`onshutdown`: What to do when all data (and optionally, the EOF marker) have been written. It is also invoked in case of I/O errors. The default is ``Ignore`. The value ``Initiate_shutdown` means that it is started to shutdown the socket. The success of this action is not waited upon, however. One can also pass ``Action f` in which case the function `f` is called with this object, the multiplex controller, and the proposed next state as arguments. By checking the proposed next state the function can see why the shutdown function was called.

`buffer_size`: The size of the internal buffer. By default unlimited.

Note that the engine is done when the output channel is closed. The socket is not shut down, and the underlying file descriptor is not closed! You can define the `shutdown` callback to do something in this case.