# pion::net::TCPStreamBuffer Class Reference

`#include <TCPStream.hpp>`

List of all members.

## Detailed Description

TCPStreamBuffer: 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 TCPStream.hpp.

## Public Types

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
| PUT_BACK_MAX = 10
| WRITE_BUFFER_SIZE = 8192
enum | { PUT_BACK_MAX = 10, WRITE_BUFFER_SIZE = 8192 }

## Public Member Functions

| TCPStreamBuffer (TCPConnectionPtr &conn_ptr)
| TCPStreamBuffer (boost::asio::io_service &io_service, const bool ssl_flag=false)
| TCPStreamBuffer (boost::asio::io_service &io_service, TCPConnection::SSLContext &ssl_context)
virtual | ~TCPStreamBuffer ()
| virtual destructor flushes the write buffer
TCPConnection & | getConnection (void)
| returns a reference to the current TCP connection
const TCPConnection & | getConnection (void) const
| returns a const reference to the current TCP connection

## Protected Member Functions

void | setupBuffers (void)
| sets up the read and write buffers for input and output
int_type | flushOutput (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)

## Constructor & Destructor Documentation

pion::net::TCPStreamBuffer::TCPStreamBuffer | ( | TCPConnectionPtr & | 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 TCPStream.hpp.

References setupBuffers().

pion::net::TCPStreamBuffer::TCPStreamBuffer | ( | 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 TCPStream.hpp.

References setupBuffers().

pion::net::TCPStreamBuffer::TCPStreamBuffer | ( | boost::asio::io_service & | io_service,
|  | TCPConnection::SSLContext & | 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 TCPStream.hpp.

References setupBuffers().

## Member Function Documentation

int_type pion::net::TCPStreamBuffer::flushOutput | ( | 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 TCPStream.hpp.

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

virtual int_type pion::net::TCPStreamBuffer::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 TCPStream.hpp.

References flushOutput().

virtual int_type pion::net::TCPStreamBuffer::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 TCPStream.hpp.

References flushOutput().

Referenced by ~TCPStreamBuffer().

virtual int_type pion::net::TCPStreamBuffer::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 TCPStream.hpp.

Referenced by xsgetn().

virtual std::streamsize pion::net::TCPStreamBuffer::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 TCPStream.hpp.

References underflow().

virtual std::streamsize pion::net::TCPStreamBuffer::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 TCPStream.hpp.

References flushOutput().

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

- net/include/pion/net/TCPStream.hpp