dtn::core::TCPConvergenceLayer Class Reference

#include <TCPConvergenceLayer.h>

Inheritance diagram for dtn::core::TCPConvergenceLayer:

dtn::utils::Service dtn::core::ConvergenceLayer

List of all members.

Public Member Functions

 TCPConvergenceLayer (string localeid, string bind_addr, unsigned short port)
virtual ~TCPConvergenceLayer ()
virtual TransmitReport transmit (const Bundle &b)
virtual TransmitReport transmit (const Bundle &b, const Node &node)
virtual void tick ()

Protected Member Functions

void callbackBundleReceived (const TCPConnection &conn, Bundle &b)

Private Member Functions

TransmitReport transmit (TCPConnection *conn, const Bundle &b)
TCPConnectionnewConnection (int socket)
bool build_select_list ()
void setnonblocking (int sock)

Private Attributes

int m_socket
string m_selfaddr
unsigned int m_selfport
Mutex m_writelock
Mutex m_mutex_connections
list< TCPConnection * > m_connections
fd_set m_socks_recv
fd_set m_socks_send
int m_highsock
NetworkFrame m_contactheader
string m_localeid

Static Private Attributes

static const int DEFAULT_PORT = 4556

Friends

class TCPConnection


Detailed Description

This class implements a ConvergenceLayer for TCP/IP.

Constructor & Destructor Documentation

dtn::core::TCPConvergenceLayer::TCPConvergenceLayer ( string  localeid,
string  bind_addr,
unsigned short  port 
)

Constructor

Parameters:
bind_addr The IP address to listen on for the TCP communication.
port The port to listen on for the TCP communication.

create the contact header

magic = 4 byte version = 1 byte flags = 1 byte keepalive_interval = 2 byte eid length = SDNV eid = eid length

header complete

References dtn::data::NetworkFrame::append(), m_connections, m_contactheader, m_localeid, m_socket, and setnonblocking().

dtn::core::TCPConvergenceLayer::~TCPConvergenceLayer (  )  [virtual]

Destructor

References m_connections, m_mutex_connections, and m_socket.


Member Function Documentation

TransmitReport dtn::core::TCPConvergenceLayer::transmit ( const Bundle b  )  [virtual]

See also:
protocol::ConvergenceLayer::transmit(Bundle *b)

Implements dtn::core::ConvergenceLayer.

References dtn::core::NO_ROUTE_FOUND.

Referenced by transmit().

TransmitReport dtn::core::TCPConvergenceLayer::transmit ( const Bundle b,
const Node node 
) [virtual]

void dtn::core::TCPConvergenceLayer::tick (  )  [virtual]

void dtn::core::TCPConvergenceLayer::callbackBundleReceived ( const TCPConnection conn,
Bundle b 
) [protected]

TransmitReport dtn::core::TCPConvergenceLayer::transmit ( TCPConnection conn,
const Bundle b 
) [private]

reactive fragmentation

fragmentation on both sides is only possible if the complete header is transferred. check this in first!

References dtn::core::CONVERGENCE_LAYER_BUSY, dtn::data::Bundle::getData(), dtn::data::Bundle::getLength(), dtn::core::TCPConnection::transmit(), and dtn::core::TRANSMIT_SUCCESSFUL.

TCPConnection * dtn::core::TCPConvergenceLayer::newConnection ( int  socket  )  [private]

bool dtn::core::TCPConvergenceLayer::build_select_list (  )  [private]

void dtn::core::TCPConvergenceLayer::setnonblocking ( int  sock  )  [private]


Friends And Related Function Documentation

friend class TCPConnection [friend]

Referenced by newConnection().


Member Data Documentation

const int dtn::core::TCPConvergenceLayer::DEFAULT_PORT = 4556 [static, private]

Referenced by build_select_list(), and tick().

Referenced by build_select_list(), and tick().

Referenced by newConnection(), and tick().

Referenced by TCPConvergenceLayer().


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

Generated on Wed Mar 25 12:41:39 2009 for IBR-DTN by  doxygen 1.5.6