senf::TCPSocketProtocol Class Reference
[Protocol Facets]

Protocol facet to support TCP operations. More...

#include <senf/Socket/Protocols/INet/TCPSocketProtocol.hh>

Inheritance diagram for senf::TCPSocketProtocol:
Inheritance graph
[legend]

List of all members.


Detailed Description

Protocol facet to support TCP operations.

This protocol facet provides all those protocol functions, which are available on any TCP socket.

Definition at line 46 of file TCPSocketProtocol.hh.


Public Types

enum   ShutType { ShutRD, ShutWR, ShutRDWR }

Public Member Functions

bool  nodelay () const
  Check current SO_NODELAY status.
void  nodelay (bool value) const
  Set SO_NODELAY status.
unsigned  siocinq () const
  Return current size of the input queue.
unsigned  siocoutq () const
  Return current size of the output queue.
void  shutdown (ShutType type) const

Abstract Interface Implementation

void  close ()
  Close socket.
unsigned  available () const
  Return (maximum) number of bytes available for reading < without < blocking.
bool  eof () const
  Check for end-of-file condition.

Member Enumeration Documentation

enum senf::TCPSocketProtocol::
ShutType
Enumerator:
ShutRD 
ShutWR 
ShutRDWR 

Definition at line 62 of file TCPSocketProtocol.hh.


Member Function Documentation

unsigned senf::TCPSocketProtocol::
available ()

Return (maximum) number of bytes available for reading < without < blocking.

This member will check in a (very, sigh) protocol dependent way, how many bytes may be read from a socket in a single (non-blocking) read operation. If the socket does not support reading (viz. NotReadablePolicy is set), this member should always return 0.

Depending on the protocol, it may not be possible to return a good value. In this case, an upper bound may be returned (e.g.: When reading from a socket which returns ethernet frames, returning 1500 from available() is ok). However, this should only be done as a last resort. Also beware, that this number should not be too large since the socket layer will always need to allocate that number of bytes for the data to be read.

Implements senf::SocketProtocol.

Definition at line 90 of file TCPSocketProtocol.cc.

void senf::TCPSocketProtocol::
close ()

Close socket.

This override will automatically shutdown() the socket whenever it is closed.

Exceptions:
senf::SystemException 
Fix:
Move into (at least) BSDSOcketProtocol

Reimplemented from senf::SocketProtocol.

Definition at line 84 of file TCPSocketProtocol.cc.

bool senf::TCPSocketProtocol::
eof ()

Check for end-of-file condition.

This is another check which (like available()) is extremely protocol dependent. This member will return true only, if at end-of-file. If the protocol does not support the notion of EOF, this member should always return false.

Implements senf::SocketProtocol.

Definition at line 96 of file TCPSocketProtocol.cc.

void senf::TCPSocketProtocol::
nodelay ( bool  value )

Set SO_NODELAY status.

Enabling SO_NODELAY will disable the NAGLE algorithm (which aggregates multiple writes into a single network packet). Enabling nodelay() optimizes the response time at the expense of the bandwidth efficiency.

Parameters:
[in]  value  SO_NODELAY state

Definition at line 51 of file TCPSocketProtocol.cc.

bool senf::TCPSocketProtocol::
nodelay ()

Check current SO_NODELAY status.

Definition at line 41 of file TCPSocketProtocol.cc.

void senf::TCPSocketProtocol::
shutdown ( ShutType  type )

Definition at line 77 of file TCPSocketProtocol.cc.

unsigned senf::TCPSocketProtocol::
siocinq ()

Return current size of the input queue.

Definition at line 59 of file TCPSocketProtocol.cc.

unsigned senf::TCPSocketProtocol::
siocoutq ()

Return current size of the output queue.

Definition at line 68 of file TCPSocketProtocol.cc.


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