# pion::tcp::stream_buffer Class Reference

`#include <stream.hpp>`

List of all members.

## Public Types

enum | { PUT_BACK_MAX = 10, WRITE_BUFFER_SIZE = 8192 }
typedef char | char_type
typedef std::char_traits< char > ::int_type | int_type
typedef std::char_traits< char > ::off_type | off_type
typedef std::char_traits< char > ::pos_type | pos_type
typedef std::char_traits< char > | traits_type

## Public Member Functions

| stream_buffer (tcp::connection_ptr &conn_ptr)
| stream_buffer (boost::asio::io_service &io_service, const bool ssl_flag=false)
| stream_buffer (boost::asio::io_service &io_service, connection::ssl_context_type &ssl_context)
virtual | ~stream_buffer ()
| virtual destructor flushes the write buffer
connection & | get_connection (void)
| returns a reference to the current TCP connection
const connection & | get_connection (void) const
| returns a const reference to the current TCP connection

## Protected Member Functions

void | setup_buffers (void)
| sets up the read and write buffers for input and output
int_type | flush_output (void)
virtual int_type | underflow (void)
virtual int_type | overflow (int_type c)
virtual std::streamsize | xsputn (const char_type *s, std::streamsize n)
virtual std::streamsize | xsgetn (char_type *s, std::streamsize n)
virtual int_type | sync (void)

## Detailed Description

stream_buffer: std::basic_streambuf wrapper for TCP network connections. Based in part on section 13.13.3 of "The Standard C++ Library" by Nicolai M. Josuttis, published in 1999 by Addison-Wesley

Definition at line 32 of file stream.hpp.

## Constructor & Destructor Documentation

pion::tcp::stream_buffer::stream_buffer | ( | tcp::connection_ptr & | conn_ptr | ) | `[inline, explicit]`

constructs a TCP stream buffer object for an existing TCP connection

Parameters:

  | conn_ptr | pointer to the TCP connection to use for reading & writing

Definition at line 56 of file stream.hpp.

References setup_buffers().

pion::tcp::stream_buffer::stream_buffer | ( | boost::asio::io_service & | io_service,
|  | const bool | ssl_flag = `false` |
| ) |  |  | `[inline, explicit]`

constructs a TCP stream buffer object for a new TCP connection

Parameters:

  | io_service | asio service associated with the connection
  | ssl_flag | if true then the connection will be encrypted using SSL

Definition at line 68 of file stream.hpp.

References setup_buffers().

pion::tcp::stream_buffer::stream_buffer | ( | boost::asio::io_service & | io_service,
|  | connection::ssl_context_type & | ssl_context |
| ) |  |  | `[inline]`

constructs a TCP stream buffer object for a new SSL/TCP connection

Parameters:

  | io_service | asio service associated with the connection
  | ssl_context | asio ssl context associated with the connection

Definition at line 82 of file stream.hpp.

References setup_buffers().

## Member Function Documentation

int_type pion::tcp::stream_buffer::flush_output | ( | void |  | ) | `[inline, protected]`

writes data in the output buffer to the TCP connection

Returns:
  int_type the number of bytes sent, or eof() if there was an error

Definition at line 115 of file stream.hpp.

Referenced by overflow(), sync(), and xsputn().

virtual int_type pion::tcp::stream_buffer::overflow | ( | int_type | c | ) | `[inline, protected, virtual]`

this function is called when the write buffer for the stream is full

Parameters:

  | c | character that has not been written yet, or eof() if we are flushing

Returns:
  int_type the last character written, or eof() if there was an error

Definition at line 182 of file stream.hpp.

References flush_output().

virtual int_type pion::tcp::stream_buffer::sync | ( | void |  | ) | `[inline, protected, virtual]`

synchronize buffers with the TCP connection

Returns:
  0 if successful, -1 if there was an error

Definition at line 279 of file stream.hpp.

References flush_output().

Referenced by ~stream_buffer().

virtual int_type pion::tcp::stream_buffer::underflow | ( | void |  | ) | `[inline, protected, virtual]`

this function is called when the read buffer has no more characters available

Returns:
  int_type the next character available for reading, or eof() if there was an error

Definition at line 139 of file stream.hpp.

Referenced by xsgetn().

virtual std::streamsize pion::tcp::stream_buffer::xsgetn | ( | char_type * | s,
|  | std::streamsize | n |
| ) |  |  | `[inline, protected, virtual]`

reads a sequence of characters

Parameters:

  | s | pointer to where the sequence of characters will be stored
  | n | number of characters in the sequence to read

Returns:
  std::streamsize number of character read

Definition at line 252 of file stream.hpp.

References underflow().

virtual std::streamsize pion::tcp::stream_buffer::xsputn | ( | const char_type * | s,
|  | std::streamsize | n |
| ) |  |  | `[inline, protected, virtual]`

writes a sequence of characters

Parameters:

  | s | pointer to a sequence of characters
  | n | number of characters in the sequence to write

Returns:
  std::streamsize number of character written

Definition at line 203 of file stream.hpp.

References flush_output().

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

- include/pion/tcp/stream.hpp