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:

Generated on 16 Sep 2013 for pion by  doxygen 1.6.1