| Home | Libraries | People | FAQ | More

##### http::async_write (3 of 3 overloads)

Write a complete message to a stream asynchronously.

###### Synopsis

Defined in header `<boost/beast/http/write.hpp>`

    template<
        class AsyncWriteStream,
        bool isRequest,
        class Body,
        class Fields,
        class WriteHandler>
    DEDUCED
    async_write(
        AsyncWriteStream& stream,
        message< isRequest, Body, Fields > const& msg,
        WriteHandler&& handler);

###### Description

This function is used to write a complete message to a stream asynchronously using HTTP/1. The function call always returns immediately. The asynchronous operation will continue until one of the following conditions is true:

- The entire message is written.
- An error occurs.

This operation is implemented in terms of zero or more calls to the stream's `async_write_some` function, and is known as a composed operation. The program must ensure that the stream performs no other writes until this operation completes. The algorithm will use a temporary `http::serializer` with an empty chunk decorator to produce buffers.

###### Remarks

This function only participates in overload resolution if `http::is_mutable_body_writer` for Body returns `false`.

###### Parameters

Name | Description
--- | ---
`stream` | The stream to which the data is to be written. The type must support the AsyncWriteStream concept.
`msg` | The message to write. The object must remain valid at least until the handler is called; ownership is not transferred.
`handler` | The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be:
    void handler(
        error_code const& error,        // result of operation
        std::size_t bytes_transferred   // the number of bytes written to the stream
    );
Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`.

###### See Also

`http::message`

Convenience header `<boost/beast/http.hpp>`