| Home | Libraries | People | FAQ | More

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

Write a complete message to a stream asynchronously using a serializer.

###### Synopsis

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

    template<
        class AsyncWriteStream,
        bool isRequest,
        class Body,
        class Fields,
        class WriteHandler>
    async_write(
        AsyncWriteStream& stream,
        serializer< isRequest, Body, Fields >& sr,
        WriteHandler&& handler);

###### Description

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

- The function `http::serializer::is_done` returns `true`
- 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.

###### Parameters

Name | Description
--- | ---
`stream` | The stream to which the data is to be written. The type must support the AsyncWriteStream concept.
`sr` | The serializer to use. 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::serializer`

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