Definition at line 42 of file SimConvergenceLayer.cc.
Public Member Functions | |
SimLink (const LinkRef &link, const SimLink::Params ¶ms) | |
~SimLink () | |
void | start_next_bundle () |
void | timeout (const oasys::Time &now) |
void | handle_pending_inflight (const oasys::Time &now) |
void | handle_arrival_events (const oasys::Time &now) |
void | handle_transmitted_events (const oasys::Time &now) |
void | reschedule_timers () |
Public Attributes | |
LinkRef | link_ |
The dtn Link. | |
struct dtnsim::SimLink::Params | params_ |
Node * | peer_node_ |
The receiving node. | |
oasys::TokenBucket | tb_ |
Token bucket to track the link rate. | |
u_char | buf_ [65536] |
Temp buffer. | |
PendingEvent * | pending_inflight_ |
Pending event (at most one) to put the next bundle in flight. | |
std::queue< PendingEvent * > | arrival_events_ |
Pending bundle arrival events. | |
std::queue< PendingEvent * > | transmitted_events_ |
Pending bundle transmitted events. | |
PendingEventTimer | inflight_timer_ |
PendingEventTimer | arrival_timer_ |
PendingEventTimer | transmitted_timer_ |
Classes | |
struct | Params |
struct | PendingEvent |
Helper class to track bundle transmission or reception events that need to be delivered in the future. More... | |
class | PendingEventTimer |
Timer class to manage pending events. More... |
dtnsim::SimLink::SimLink | ( | const LinkRef & | link, | |
const SimLink::Params & | params | |||
) | [inline] |
Definition at line 47 of file SimConvergenceLayer.cc.
dtnsim::SimLink::~SimLink | ( | ) | [inline] |
Definition at line 61 of file SimConvergenceLayer.cc.
void dtnsim::SimLink::start_next_bundle | ( | ) |
Definition at line 152 of file SimConvergenceLayer.cc.
References dtnsim::Node::active_node(), arrival_events_, ASSERT, buf_, dtn::Bundle::bundleid(), dtn::BlockInfoVec::find_block(), dtnsim::Connectivity::instance(), dtnsim::ConnState::latency_, len, link_, dtnsim::Connectivity::lookup(), dtn::Bundle::mutable_payload(), params_, peer_node_, pending_inflight_, dtnsim::SimLink::Params::reliable_, reschedule_timers(), dtn::BlockInfo::set_data_length(), dtn::BundlePayload::set_length(), tb_, dtnsim::Simulator::time(), and transmitted_events_.
Referenced by handle_pending_inflight().
void dtnsim::SimLink::timeout | ( | const oasys::Time & | now | ) |
void dtnsim::SimLink::handle_pending_inflight | ( | const oasys::Time & | now | ) |
Definition at line 276 of file SimConvergenceLayer.cc.
References ASSERT, dtnsim::SimLink::PendingEvent::bundle_, link_, pending_inflight_, reschedule_timers(), start_next_bundle(), dtnsim::SimLink::PendingEvent::time_, and dtnsim::SimLink::PendingEvent::total_len_.
Referenced by dtnsim::SimLink::PendingEventTimer::timeout().
void dtnsim::SimLink::handle_arrival_events | ( | const oasys::Time & | now | ) |
Definition at line 303 of file SimConvergenceLayer.cc.
References dtnsim::Node::active_node(), arrival_events_, ASSERT, dtnsim::SimLink::PendingEvent::bundle_, dtn::EVENTSRC_PEER, dtn::BundleDaemon::local_eid(), params_, peer_node_, dtnsim::Node::post_event(), reschedule_timers(), dtnsim::SimLink::Params::set_prevhop_, dtnsim::SimLink::PendingEvent::time_, and dtnsim::SimLink::PendingEvent::total_len_.
Referenced by dtnsim::SimLink::PendingEventTimer::timeout().
void dtnsim::SimLink::handle_transmitted_events | ( | const oasys::Time & | now | ) |
Definition at line 337 of file SimConvergenceLayer.cc.
References ASSERT, dtnsim::SimLink::PendingEvent::bundle_, link_, params_, dtnsim::SimLink::Params::reliable_, reschedule_timers(), dtnsim::SimLink::PendingEvent::time_, dtnsim::SimLink::PendingEvent::total_len_, and transmitted_events_.
Referenced by dtnsim::SimLink::PendingEventTimer::timeout().
void dtnsim::SimLink::reschedule_timers | ( | ) |
Definition at line 232 of file SimConvergenceLayer.cc.
References arrival_events_, arrival_timer_, inflight_timer_, pending_inflight_, dtnsim::SimLink::PendingEvent::time_, transmitted_events_, and transmitted_timer_.
Referenced by handle_arrival_events(), handle_pending_inflight(), handle_transmitted_events(), and start_next_bundle().
LinkRef dtnsim::SimLink::link_ |
The dtn Link.
Definition at line 71 of file SimConvergenceLayer.cc.
Referenced by handle_pending_inflight(), handle_transmitted_events(), and start_next_bundle().
Referenced by handle_arrival_events(), handle_transmitted_events(), and start_next_bundle().
The receiving node.
Definition at line 95 of file SimConvergenceLayer.cc.
Referenced by handle_arrival_events(), dtnsim::SimConvergenceLayer::init_link(), start_next_bundle(), and dtnsim::SimConvergenceLayer::update_connectivity().
oasys::TokenBucket dtnsim::SimLink::tb_ |
Token bucket to track the link rate.
Definition at line 98 of file SimConvergenceLayer.cc.
Referenced by start_next_bundle(), and dtnsim::SimConvergenceLayer::update_connectivity().
u_char dtnsim::SimLink::buf_[65536] |
Temp buffer.
Definition at line 101 of file SimConvergenceLayer.cc.
Referenced by start_next_bundle().
Pending event (at most one) to put the next bundle in flight.
Definition at line 119 of file SimConvergenceLayer.cc.
Referenced by handle_pending_inflight(), reschedule_timers(), and start_next_bundle().
std::queue<PendingEvent*> dtnsim::SimLink::arrival_events_ |
Pending bundle arrival events.
Definition at line 122 of file SimConvergenceLayer.cc.
Referenced by handle_arrival_events(), reschedule_timers(), and start_next_bundle().
std::queue<PendingEvent*> dtnsim::SimLink::transmitted_events_ |
Pending bundle transmitted events.
Definition at line 125 of file SimConvergenceLayer.cc.
Referenced by handle_transmitted_events(), reschedule_timers(), and start_next_bundle().
Three timer instances to independently schedule the timers, though each class can itself be managed with a FIFO queue.
Definition at line 144 of file SimConvergenceLayer.cc.
Referenced by reschedule_timers().
Three timer instances to independently schedule the timers, though each class can itself be managed with a FIFO queue.
Definition at line 145 of file SimConvergenceLayer.cc.
Referenced by reschedule_timers().
Three timer instances to independently schedule the timers, though each class can itself be managed with a FIFO queue.
Definition at line 146 of file SimConvergenceLayer.cc.
Referenced by reschedule_timers().