Helper class (and thread) that manages an established connection with a peer daemon. More...
#include <SerialConvergenceLayer.h>
Public Member Functions | |
Connection (SerialConvergenceLayer *cl, const LinkRef &link, SerialLinkParams *params) | |
Constructor for a connection. | |
virtual | ~Connection () |
Destructor. | |
virtual void | serialize (oasys::SerializeAction *a) |
Virtual from SerializableObject. | |
Protected Member Functions | |
void | recv_data () |
Hook for handle_poll_activity to receive data. | |
void | send_sync () |
Send a sync byte. | |
SerialLinkParams * | serial_lparams () |
Utility function to downcast the params_ pointer that's stored in the CLConnection parent class. | |
virtual void | connect () |
Virtual from CLConnection. | |
virtual void | disconnect () |
Virtual from CLConnection. | |
virtual void | initialize_pollfds () |
Virtual from CLConnection. | |
virtual void | handle_poll_timeout () |
Virtual from CLConnection. | |
virtual void | handle_poll_activity () |
Virtual from CLConnection. | |
void | send_data () |
virtual from StreamConvergenceLayer::Connection | |
Protected Attributes | |
oasys::TTY * | tty_ |
The tty. | |
struct pollfd * | tty_pollfd_ |
Poll structure for the tty. | |
bool | synced_ |
Whether the SYNC has completed. | |
Friends | |
class | SerialConvergenceLayer |
Helper class (and thread) that manages an established connection with a peer daemon.
Although the same class is used in both cases, a particular Connection is either a receiver or a sender, as indicated by the direction variable. Note that to deal with NAT, the side which does the active connect is not necessarily the sender.
Definition at line 95 of file SerialConvergenceLayer.h.
dtn::SerialConvergenceLayer::Connection::Connection | ( | SerialConvergenceLayer * | cl, | |
const LinkRef & | link, | |||
SerialLinkParams * | params | |||
) |
Constructor for a connection.
Definition at line 138 of file SerialConvergenceLayer.cc.
References dtn::CLConnection::set_nexthop(), synced_, and tty_.
dtn::SerialConvergenceLayer::Connection::~Connection | ( | ) | [virtual] |
void dtn::SerialConvergenceLayer::Connection::connect | ( | ) | [protected, virtual] |
Virtual from CLConnection.
Implements dtn::CLConnection.
Definition at line 222 of file SerialConvergenceLayer.cc.
References dtn::StreamConvergenceLayer::Connection::data_rcvd_, dtnsim::gettimeofday(), dtn::SerialConvergenceLayer::SerialLinkParams::initstr_, send_sync(), dtn::CLConnection::sendbuf_, and serial_lparams().
void dtn::SerialConvergenceLayer::Connection::disconnect | ( | ) | [protected, virtual] |
Virtual from CLConnection.
Implements dtn::CLConnection.
Definition at line 247 of file SerialConvergenceLayer.cc.
References tty_.
void dtn::SerialConvergenceLayer::Connection::handle_poll_activity | ( | ) | [protected, virtual] |
Virtual from CLConnection.
Implements dtn::CLConnection.
Definition at line 311 of file SerialConvergenceLayer.cc.
References dtn::StreamConvergenceLayer::Connection::break_contact(), dtn::ContactEvent::BROKEN, dtn::StreamConvergenceLayer::Connection::check_keepalive(), dtn::CLConnection::contact_broken_, dtn::CLConnection::contact_up_, dtn::StreamConvergenceLayer::Connection::process_data(), recv_data(), dtn::CLConnection::recvbuf_, send_data(), and tty_pollfd_.
void dtn::SerialConvergenceLayer::Connection::handle_poll_timeout | ( | ) | [protected, virtual] |
Virtual from CLConnection.
Reimplemented from dtn::StreamConvergenceLayer::Connection.
Definition at line 276 of file SerialConvergenceLayer.cc.
References dtn::StreamConvergenceLayer::Connection::break_contact(), dtn::ContactEvent::BROKEN, dtn::StreamConvergenceLayer::Connection::data_rcvd_, dtnsim::gettimeofday(), send_sync(), serial_lparams(), synced_, and TIMEVAL_DIFF_MSEC.
void dtn::SerialConvergenceLayer::Connection::initialize_pollfds | ( | ) | [protected, virtual] |
Virtual from CLConnection.
Implements dtn::CLConnection.
Definition at line 173 of file SerialConvergenceLayer.cc.
References dtn::StreamConvergenceLayer::Connection::break_contact(), dtn::ContactEvent::BROKEN, dtn::CLConnection::cl_, dtn::CLConnection::contact_, errno, dtn::CLConnection::num_pollfds_, dtn::CLConnection::params_, dtn::ConnectionConvergenceLayer::parse_nexthop(), dtn::CLConnection::poll_timeout_, dtn::CLConnection::pollfds_, serial_lparams(), dtn::SerialConvergenceLayer::SerialLinkParams::sync_interval_, tty_, and tty_pollfd_.
void dtn::SerialConvergenceLayer::Connection::recv_data | ( | ) | [protected] |
Hook for handle_poll_activity to receive data.
Definition at line 411 of file SerialConvergenceLayer.cc.
References ASSERT, dtn::StreamConvergenceLayer::Connection::break_contact(), dtn::ContactEvent::BROKEN, dtn::CLConnection::contact_broken_, dtn::StreamConvergenceLayer::Connection::contact_initiated_, hex, dtn::SerialConvergenceLayer::SerialLinkParams::hexdump_, dtn::StreamConvergenceLayer::Connection::initiate_contact(), dtn::CLConnection::params_, dtn::CLConnection::poll_timeout_, dtn::CLConnection::recvbuf_, serial_lparams(), dtn::SerialConvergenceLayer::SYNC, synced_, dtn::ConnectionConvergenceLayer::LinkParams::test_read_delay_, dtn::ConnectionConvergenceLayer::LinkParams::test_read_limit_, and tty_.
Referenced by handle_poll_activity().
void dtn::SerialConvergenceLayer::Connection::send_data | ( | ) | [protected, virtual] |
virtual from StreamConvergenceLayer::Connection
Implements dtn::StreamConvergenceLayer::Connection.
Definition at line 360 of file SerialConvergenceLayer.cc.
References ASSERT, dtn::StreamConvergenceLayer::Connection::break_contact(), dtn::ContactEvent::BROKEN, dtn::CLConnection::contact_broken_, errno, hex, dtn::SerialConvergenceLayer::SerialLinkParams::hexdump_, dtn::CLConnection::params_, dtn::CLConnection::sendbuf_, serial_lparams(), dtn::ConnectionConvergenceLayer::LinkParams::test_write_limit_, tty_, and tty_pollfd_.
Referenced by handle_poll_activity(), and send_sync().
void dtn::SerialConvergenceLayer::Connection::send_sync | ( | ) | [protected] |
Send a sync byte.
Definition at line 256 of file SerialConvergenceLayer.cc.
References ASSERT, send_data(), dtn::CLConnection::sendbuf_, and dtn::SerialConvergenceLayer::SYNC.
Referenced by connect(), and handle_poll_timeout().
SerialLinkParams* dtn::SerialConvergenceLayer::Connection::serial_lparams | ( | ) | [inline, protected] |
Utility function to downcast the params_ pointer that's stored in the CLConnection parent class.
Definition at line 139 of file SerialConvergenceLayer.h.
References ASSERT, and dtn::CLConnection::params_.
Referenced by connect(), handle_poll_timeout(), initialize_pollfds(), recv_data(), and send_data().
void dtn::SerialConvergenceLayer::Connection::serialize | ( | oasys::SerializeAction * | a | ) | [virtual] |
Virtual from SerializableObject.
Reimplemented from dtn::CLInfo.
Definition at line 165 of file SerialConvergenceLayer.cc.
friend class SerialConvergenceLayer [friend] |
Definition at line 115 of file SerialConvergenceLayer.h.
bool dtn::SerialConvergenceLayer::Connection::synced_ [protected] |
Whether the SYNC has completed.
Definition at line 148 of file SerialConvergenceLayer.h.
Referenced by Connection(), handle_poll_timeout(), and recv_data().
oasys::TTY* dtn::SerialConvergenceLayer::Connection::tty_ [protected] |
The tty.
Definition at line 146 of file SerialConvergenceLayer.h.
Referenced by Connection(), disconnect(), initialize_pollfds(), recv_data(), send_data(), and ~Connection().
struct pollfd* dtn::SerialConvergenceLayer::Connection::tty_pollfd_ [protected] |
Poll structure for the tty.
Definition at line 147 of file SerialConvergenceLayer.h.
Referenced by handle_poll_activity(), initialize_pollfds(), and send_data().