| Home | Libraries | People | FAQ | More

#### http::async_write_header

Write a header 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>
    DEDUCED
    async_write_header(
        AsyncWriteStream& stream,
        serializer< isRequest, Body, Fields >& sr,
        WriteHandler&& handler);

##### Description

This function is used to write a header 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_header_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`.

##### Remarks

The implementation will call `http::serializer::split` with the value `true` on the serializer passed in.

##### See Also

`http::serializer`

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