#include <writer.hpp>
Inherited by pion::http::request_writer, and pion::http::response_writer.
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 |
writer: used to asynchronously send HTTP messages
Definition at line 34 of file writer.hpp.
pion::http::writer::writer | ( | tcp::connection_ptr & | tcp_conn, | |
finished_handler_t | handler | |||
) | [inline, protected] |
protected constructor: only derived classes may create objects
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.
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
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
write_buffers | vector of write buffers to initialize |
Implemented in pion::http::request_writer, and pion::http::response_writer.
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.
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.
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.
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.
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.
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
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.
void pion::http::writer::write | ( | const T & | data | ) | [inline] |
write text (non-binary) payload content
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
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
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().