# pion::http::writer Class Reference

`#include <writer.hpp>`

Inherited by pion::http::request_writer, and pion::http::response_writer.

List of all members.

## Classes

class | binary_cache_t
| used to cache binary data included within the payload content

## Public Member Functions

virtual | ~writer ()
| default destructor
void | clear (void)
| clears out all of the memory buffers used to cache payload content data
template<typename T >
void | write (const T &data)
void | write (std::ostream &(*iomanip)(std::ostream &))
void | write (const void *data, size_t length)
void | write_no_copy (const std::string &data)
void | write_no_copy (void *data, size_t length)
void | send (void)
template<typename SendHandler >
void | send (SendHandler send_handler)
template<typename SendHandler >
void | send_chunk (SendHandler send_handler)
template<typename SendHandler >
void | send_final_chunk (SendHandler send_handler)
void | send_final_chunk (void)
tcp::connection_ptr & | get_connection (void)
| returns a shared pointer to the TCP connection
size_t | get_content_length (void) const
| returns the length of the payload content (in bytes)
void | supports_chunked_messages (bool b)
| sets whether or not the client supports chunked messages
bool | supports_chunked_messages () const
| returns true if the client supports chunked messages
bool | sending_chunked_message () const
| returns true if we are sending a chunked message to the client
void | set_logger (logger log_ptr)
| sets the logger to be used
logger | get_logger (void)
| returns the logger currently in use

## Protected Types

typedef boost::function1< void, const boost::system::error_code & > | finished_handler_t
| function called after the HTTP message has been sent
typedef boost::function2< void, const boost::system::error_code &, std::size_t > | write_handler_t
| data type for a function that handles write operations

## Protected Member Functions

| writer (tcp::connection_ptr &tcp_conn, finished_handler_t handler)
virtual void | handle_write (const boost::system::error_code &write_error, std::size_t bytes_written)=0
virtual void | prepare_buffers_for_send (http::message::write_buffers_t &write_buffers)=0
virtual write_handler_t | bind_to_write_handler (void)=0
| returns a function bound to writer::handle_write()
void | finished_writing (const boost::system::error_code &ec)
| called after we have finished sending the HTTP message

## Detailed Description

writer: used to asynchronously send HTTP messages

Definition at line 34 of file writer.hpp.

## Constructor & Destructor Documentation

pion::http::writer::writer | ( | tcp::connection_ptr & | tcp_conn,
|  | finished_handler_t | handler |
| ) |  |  | `[inline, protected]`

protected constructor: only derived classes may create objects

Parameters:

  | tcp_conn | TCP connection used to send the message
  | handler | function called after the request has been sent

Definition at line 52 of file writer.hpp.

## Member Function Documentation

virtual void pion::http::writer::handle_write | ( | const boost::system::error_code & | write_error,
|  | std::size_t | bytes_written |
| ) |  |  | `[protected, pure virtual]`

called after the message is sent

Parameters:

  | write_error | error status from the last write operation
  | bytes_written | number of bytes sent by the last write operation

Implemented in pion::http::request_writer, and pion::http::response_writer.

virtual void pion::http::writer::prepare_buffers_for_send | ( | http::message::write_buffers_t & | write_buffers | ) | `[protected, pure virtual]`

initializes a vector of write buffers with the HTTP message information

Parameters:

  | write_buffers | vector of write buffers to initialize

Implemented in pion::http::request_writer, and pion::http::response_writer.

template<typename SendHandler >

void pion::http::writer::send | ( | SendHandler | send_handler | ) | `[inline]`

Sends all data buffered as a single HTTP message (without chunking). Following a call to this function, it is not thread safe to use your reference to the writer object until the send_handler has been called.

Parameters:

  | send_handler | function that is called after the message has been sent to the client. Your callback function must end the connection by calling connection::finish().

Definition at line 180 of file writer.hpp.

void pion::http::writer::send | ( | void |  | ) | `[inline]`

Sends all data buffered as a single HTTP message (without chunking). Following a call to this function, it is not thread safe to use your reference to the writer object.

Definition at line 166 of file writer.hpp.

template<typename SendHandler >

void pion::http::writer::send_chunk | ( | SendHandler | send_handler | ) | `[inline]`

Sends all data buffered as a single HTTP chunk. Following a call to this function, it is not thread safe to use your reference to the writer object until the send_handler has been called.

Parameters:

  | send_handler | function that is called after the chunk has been sent to the client. Your callback function must end by calling one of send_chunk() or send_final_chunk(). Also, be sure to clear() the writer before writing data to it.

Definition at line 195 of file writer.hpp.

void pion::http::writer::send_final_chunk | ( | void |  | ) | `[inline]`

Sends all data buffered (if any) and also sends the final HTTP chunk. This function (either overloaded version) must be called following any calls to send_chunk(). Following a call to this function, it is not thread safe to use your reference to the writer object.

Definition at line 230 of file writer.hpp.

template<typename SendHandler >

void pion::http::writer::send_final_chunk | ( | SendHandler | send_handler | ) | `[inline]`

Sends all data buffered (if any) and also sends the final HTTP chunk. This function (either overloaded version) must be called following any calls to send_chunk(). Following a call to this function, it is not thread safe to use your reference to the writer object until the send_handler has been called.

Parameters:

  | send_handler | function that is called after the message has been sent to the client. Your callback function must end the connection by calling connection::finish().

Definition at line 218 of file writer.hpp.

void pion::http::writer::write | ( | const void * | data,
|  | size_t | length |
| ) |  |  | `[inline]`

write binary payload content

Parameters:

  | data | points to the binary data to append to the payload content
  | length | the length, in bytes, of the binary data

Definition at line 122 of file writer.hpp.

template<typename T >

void pion::http::writer::write | ( | const T & | data | ) | `[inline]`

write text (non-binary) payload content

Parameters:

  | data | the data to append to the payload content

Definition at line 106 of file writer.hpp.

void pion::http::writer::write_no_copy | ( | void * | data,
|  | size_t | length |
| ) |  |  | `[inline]`

write binary payload content; the data written is not copied, and therefore must persist until the message has finished sending

Parameters:

  | data | points to the binary data to append to the payload content
  | length | the length, in bytes, of the binary data

Definition at line 152 of file writer.hpp.

void pion::http::writer::write_no_copy | ( | const std::string & | data | ) | `[inline]`

write text (non-binary) payload content; the data written is not copied, and therefore must persist until the message has finished sending

Parameters:

  | data | the data to append to the payload content

Definition at line 137 of file writer.hpp.

Referenced by pion::http::request_writer::request_writer().

The documentation for this class was generated from the following files:

- include/pion/http/writer.hpp
- src/http_writer.cpp