dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection Class Reference

Stream connection class. More...

#include <StreamConvergenceLayer.h>

Inheritance diagram for dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection:

dtn::CLConnection dtn::CLInfo dtn::SerialConvergenceLayer::SerialConvergenceLayer::Connection dtn::TCPConvergenceLayer::TCPConvergenceLayer::Connection

List of all members.

Public Member Functions

 Connection (const char *classname, const char *logpath, StreamConvergenceLayer *cl, StreamLinkParams *params, bool active_connector)
 Constructor.
bool send_pending_data ()
 virtual from CLConnection
void handle_bundles_queued ()
 virtual from CLConnection
void handle_cancel_bundle (Bundle *bundle)
 virtual from CLConnection
void handle_poll_timeout ()
 virtual from CLConnection
void break_contact (ContactEvent::reason_t reason)
 virtual from CLConnection

Protected Member Functions

virtual void send_data ()=0
 Hook used to tell the derived CL class to drain data out of the send buffer.
void initiate_contact ()
 utility functions used by derived classes
void process_data ()
 utility functions used by derived classes
void check_keepalive ()
 utility functions used by derived classes

Protected Attributes

InFlightBundlecurrent_inflight_
 Current bundle that's in flight.
size_t send_segment_todo_
 Bytes left to send of current segment.
size_t recv_segment_todo_
 Bytes left to recv of current segment.
struct timeval data_rcvd_
 Timestamp for idle/keepalive timer.
struct timeval data_sent_
 Timestamp for idle timer.
struct timeval keepalive_sent_
 Timestamp for keepalive timer.
bool breaking_contact_
 Bit to catch multiple calls to break_contact.
bool contact_initiated_

Private Member Functions

StreamLinkParamsstream_lparams ()
 Utility function to downcast the params_ pointer that's stored in the CLConnection parent class.
void note_data_rcvd ()
 utility functions used internally in this class
void note_data_sent ()
 utility functions used internally in this class
bool send_pending_acks ()
 utility functions used internally in this class
bool start_next_bundle ()
 utility functions used internally in this class
bool send_next_segment (InFlightBundle *inflight)
 utility functions used internally in this class
bool send_data_todo (InFlightBundle *inflight)
 utility functions used internally in this class
bool finish_bundle (InFlightBundle *inflight)
 utility functions used internally in this class
void check_completed (InFlightBundle *inflight)
 utility functions used internally in this class
void send_keepalive ()
 utility functions used internally in this class
void handle_contact_initiation ()
 utility functions used internally in this class
bool handle_data_segment (u_int8_t flags)
 utility functions used internally in this class
bool handle_data_todo ()
 utility functions used internally in this class
bool handle_ack_segment (u_int8_t flags)
 utility functions used internally in this class
bool handle_refuse_bundle (u_int8_t flags)
 utility functions used internally in this class
bool handle_keepalive (u_int8_t flags)
 utility functions used internally in this class
bool handle_shutdown (u_int8_t flags)
 utility functions used internally in this class
void check_completed (IncomingBundle *incoming)
 utility functions used internally in this class


Detailed Description

Stream connection class.

Definition at line 187 of file StreamConvergenceLayer.h.


Constructor & Destructor Documentation

dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::Connection ( const char *  classname,
const char *  logpath,
StreamConvergenceLayer cl,
StreamLinkParams params,
bool  active_connector 
)

Constructor.

Definition at line 124 of file StreamConvergenceLayer.cc.


Member Function Documentation

void dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::break_contact ( ContactEvent::reason_t  reason  )  [virtual]

virtual from CLConnection

Reimplemented from dtn::CLConnection.

Definition at line 1361 of file StreamConvergenceLayer.cc.

References dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::breaking_contact_, dtn::ContactEvent::BROKEN, dtn::ContactEvent::CL_ERROR, dtn::ContactEvent::CL_VERSION, dtn::ContactEvent::DISCOVERY, dtn::ContactEvent::IDLE, dtn::ContactEvent::INVALID, dtn::ContactEvent::NO_INFO, dtn::ContactEvent::RECONNECT, dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::send_data(), dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::send_segment_todo_, dtn::CLConnection::sendbuf_, dtn::StreamConvergenceLayer::SHUTDOWN, dtn::ContactEvent::SHUTDOWN, dtn::StreamConvergenceLayer::SHUTDOWN_BUSY, dtn::StreamConvergenceLayer::SHUTDOWN_HAS_REASON, dtn::StreamConvergenceLayer::SHUTDOWN_IDLE_TIMEOUT, dtn::StreamConvergenceLayer::SHUTDOWN_NO_REASON, dtn::StreamConvergenceLayer::SHUTDOWN_VERSION_MISMATCH, dtn::ContactEvent::TIMEOUT, and dtn::ContactEvent::USER.

Referenced by dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::check_completed(), dtn::TCPConvergenceLayer::TCPConvergenceLayer::Connection::connect(), dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::handle_ack_segment(), dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::handle_contact_initiation(), dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::handle_data_segment(), dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::handle_data_todo(), dtn::TCPConvergenceLayer::TCPConvergenceLayer::Connection::handle_poll_activity(), dtn::SerialConvergenceLayer::SerialConvergenceLayer::Connection::handle_poll_activity(), dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::handle_poll_timeout(), dtn::SerialConvergenceLayer::SerialConvergenceLayer::Connection::handle_poll_timeout(), dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::handle_refuse_bundle(), dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::handle_shutdown(), dtn::SerialConvergenceLayer::SerialConvergenceLayer::Connection::initialize_pollfds(), dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::process_data(), dtn::TCPConvergenceLayer::TCPConvergenceLayer::Connection::recv_data(), dtn::SerialConvergenceLayer::SerialConvergenceLayer::Connection::recv_data(), dtn::TCPConvergenceLayer::TCPConvergenceLayer::Connection::send_data(), and dtn::SerialConvergenceLayer::SerialConvergenceLayer::Connection::send_data().

void dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::check_completed ( IncomingBundle incoming  )  [private]

void dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::check_completed ( InFlightBundle inflight  )  [private]

void dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::check_keepalive (  )  [protected]

bool dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::finish_bundle ( InFlightBundle inflight  )  [private]

bool dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::handle_ack_segment ( u_int8_t  flags  )  [private]

void dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::handle_bundles_queued (  )  [virtual]

virtual from CLConnection

Implements dtn::CLConnection.

Definition at line 367 of file StreamConvergenceLayer.cc.

References dtn::CLConnection::contact_.

void dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::handle_cancel_bundle ( Bundle bundle  )  [virtual]

void dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::handle_contact_initiation (  )  [private]

utility functions used internally in this class

Definition at line 212 of file StreamConvergenceLayer.cc.

References ASSERT, dtn::EndpointID::assign(), dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::break_contact(), dtn::EndpointID::c_str(), dtn::CLConnection::cl_, dtn::ContactEvent::CL_ERROR, dtn::ContactEvent::CL_VERSION, dtn::CLConnection::contact_, dtn::CLConnection::contact_up(), dtn::CLConnection::contact_up_, dtn::ConnectionConvergenceLayer::ConnectionConvergenceLayer::LinkParams::data_timeout_, decode(), dtn::CLConnection::find_contact(), dtn::StreamConvergenceLayer::StreamConvergenceLayer::ContactHeader::flags, dtn::StreamConvergenceLayer::StreamConvergenceLayer::ContactHeader::keepalive_interval, dtn::StreamConvergenceLayer::StreamConvergenceLayer::StreamLinkParams::keepalive_interval_, dtn::StreamConvergenceLayer::StreamConvergenceLayer::ContactHeader::magic, dtn::ConvergenceLayer::MAGIC, dtn::StreamConvergenceLayer::NEGATIVE_ACK_ENABLED, dtn::StreamConvergenceLayer::StreamConvergenceLayer::StreamLinkParams::negative_ack_enabled_, dtn::EndpointID::NULL_EID(), dtn::CLConnection::poll_timeout_, dtn::StreamConvergenceLayer::REACTIVE_FRAG_ENABLED, dtn::ConnectionConvergenceLayer::ConnectionConvergenceLayer::LinkParams::reactive_frag_enabled_, dtn::CLConnection::recvbuf_, dtn::StreamConvergenceLayer::SEGMENT_ACK_ENABLED, dtn::StreamConvergenceLayer::StreamConvergenceLayer::StreamLinkParams::segment_ack_enabled_, dtn::EndpointID::str(), dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::stream_lparams(), and dtn::StreamConvergenceLayer::StreamConvergenceLayer::ContactHeader::version.

Referenced by dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::process_data().

bool dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::handle_data_segment ( u_int8_t  flags  )  [private]

bool dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::handle_data_todo (  )  [private]

bool dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::handle_keepalive ( u_int8_t  flags  )  [private]

utility functions used internally in this class

Definition at line 1351 of file StreamConvergenceLayer.cc.

References dtn::CLConnection::recvbuf_.

Referenced by dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::process_data().

void dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::handle_poll_timeout (  )  [virtual]

bool dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::handle_refuse_bundle ( u_int8_t  flags  )  [private]

bool dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::handle_shutdown ( u_int8_t  flags  )  [private]

void dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::initiate_contact (  )  [protected]

utility functions used by derived classes

Definition at line 140 of file StreamConvergenceLayer.cc.

References ASSERT, dtn::CLConnection::cl_, dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::contact_initiated_, dtn::EndpointID::data(), dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::data_rcvd_, dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::data_sent_, encode(), encoding_len(), dtn::StreamConvergenceLayer::StreamConvergenceLayer::ContactHeader::flags, dtnsim::gettimeofday(), dtn::StreamConvergenceLayer::StreamConvergenceLayer::ContactHeader::keepalive_interval, dtn::StreamConvergenceLayer::StreamConvergenceLayer::StreamLinkParams::keepalive_interval_, dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::keepalive_sent_, dtn::EndpointID::length(), dtn::BundleDaemon::local_eid(), dtn::ConvergenceLayer::MAGIC, dtn::StreamConvergenceLayer::StreamConvergenceLayer::ContactHeader::magic, dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::note_data_sent(), dtn::StreamConvergenceLayer::REACTIVE_FRAG_ENABLED, dtn::ConnectionConvergenceLayer::ConnectionConvergenceLayer::LinkParams::reactive_frag_enabled_, dtn::StreamConvergenceLayer::SEGMENT_ACK_ENABLED, dtn::StreamConvergenceLayer::StreamConvergenceLayer::StreamLinkParams::segment_ack_enabled_, dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::send_data(), dtn::CLConnection::sendbuf_, dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::stream_lparams(), and dtn::StreamConvergenceLayer::StreamConvergenceLayer::ContactHeader::version.

Referenced by dtn::TCPConvergenceLayer::TCPConvergenceLayer::Connection::accept(), dtn::TCPConvergenceLayer::TCPConvergenceLayer::Connection::connect(), dtn::TCPConvergenceLayer::TCPConvergenceLayer::Connection::handle_poll_activity(), and dtn::SerialConvergenceLayer::SerialConvergenceLayer::Connection::recv_data().

void dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::note_data_rcvd (  )  [private]

void dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::note_data_sent (  )  [private]

void dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::process_data (  )  [protected]

utility functions used by derived classes

Definition at line 951 of file StreamConvergenceLayer.cc.

References dtn::StreamConvergenceLayer::ACK_SEGMENT, ASSERT, dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::break_contact(), dtn::ContactEvent::CL_ERROR, dtn::CLConnection::contact_broken_, dtn::CLConnection::contact_up_, dtn::StreamConvergenceLayer::DATA_SEGMENT, dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::handle_ack_segment(), dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::handle_contact_initiation(), dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::handle_data_segment(), dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::handle_data_todo(), dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::handle_keepalive(), dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::handle_refuse_bundle(), dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::handle_shutdown(), dtn::StreamConvergenceLayer::KEEPALIVE, dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::note_data_rcvd(), dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::recv_segment_todo_, dtn::CLConnection::recvbuf_, dtn::StreamConvergenceLayer::REFUSE_BUNDLE, and dtn::StreamConvergenceLayer::SHUTDOWN.

Referenced by dtn::TCPConvergenceLayer::TCPConvergenceLayer::Connection::handle_poll_activity(), and dtn::SerialConvergenceLayer::SerialConvergenceLayer::Connection::handle_poll_activity().

virtual void dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::send_data (  )  [protected, pure virtual]

bool dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::send_data_todo ( InFlightBundle inflight  )  [private]

void dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::send_keepalive (  )  [private]

bool dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::send_next_segment ( InFlightBundle inflight  )  [private]

bool dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::send_pending_acks (  )  [private]

bool dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::send_pending_data (  )  [virtual]

bool dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::start_next_bundle (  )  [private]

StreamLinkParams* dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::stream_lparams (  )  [inline, private]


Member Data Documentation

bool dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::breaking_contact_ [protected]

Bit to catch multiple calls to break_contact.

Definition at line 259 of file StreamConvergenceLayer.h.

Referenced by dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::break_contact().

bool dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::contact_initiated_ [protected]

InFlightBundle* dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::current_inflight_ [protected]

struct timeval dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::data_rcvd_ [read, protected]

struct timeval dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::data_sent_ [read, protected]

struct timeval dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::keepalive_sent_ [read, protected]

size_t dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::recv_segment_todo_ [protected]

size_t dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::send_segment_todo_ [protected]


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

Generated on Fri Jan 30 09:27:04 2009 for DTN Reference Implementation by  doxygen 1.5.8