Classes | Public Member Functions | Protected Member Functions

dtn::routing::EpidemicRoutingExtension Class Reference

#include <EpidemicRoutingExtension.h>

Inherits dtn::routing::BaseRouter::ThreadedExtension, and dtn::net::DiscoveryServiceProvider.

Collaboration diagram for dtn::routing::EpidemicRoutingExtension:
Collaboration graph
[legend]

List of all members.

Classes

class  EpidemicExtensionBlock
class  ExpireTask
class  ProcessBundleTask
class  SearchNextBundleTask
class  Task
class  TransferSummaryVectorTask

Public Member Functions

 EpidemicRoutingExtension ()
 ~EpidemicRoutingExtension ()
void notify (const dtn::core::Event *evt)
void update (std::string &name, std::string &data)
virtual void stopExtension ()

Protected Member Functions

void run ()
bool __cancellation ()

Detailed Description

Definition at line 33 of file EpidemicRoutingExtension.h.


Constructor & Destructor Documentation

dtn::routing::EpidemicRoutingExtension::EpidemicRoutingExtension (  ) 
dtn::routing::EpidemicRoutingExtension::~EpidemicRoutingExtension (  ) 

Definition at line 70 of file EpidemicRoutingExtension.cpp.

References ibrcommon::JoinableThread::join(), and ibrcommon::JoinableThread::stop().

Here is the call graph for this function:


Member Function Documentation

bool dtn::routing::EpidemicRoutingExtension::__cancellation (  )  [protected]

Definition at line 265 of file EpidemicRoutingExtension.cpp.

References ibrcommon::Queue< T >::abort().

Here is the call graph for this function:

void dtn::routing::EpidemicRoutingExtension::notify ( const dtn::core::Event evt  ) 

Definition at line 87 of file EpidemicRoutingExtension.cpp.

References dtn::routing::NeighborDatabase::NeighborEntry::_filter, dtn::routing::BundleSummary::add(), dtn::routing::QueueBundleEvent::bundle, dtn::data::MetaBundle::destination, dtn::routing::NeighborDatabase::get(), dtn::core::NodeEvent::getAction(), dtn::core::TimeEvent::getAction(), ibrcommon::BloomFilter::getAllocation(), dtn::net::TransferCompletedEvent::getBundle(), dtn::net::TransferAbortedEvent::getBundleID(), dtn::core::NodeEvent::getNode(), dtn::data::EID::getNodeEID(), dtn::net::TransferCompletedEvent::getPeer(), dtn::net::TransferAbortedEvent::getPeer(), dtn::routing::BaseRouter::Extension::getRouter(), dtn::routing::BaseRouter::getStorage(), dtn::core::TimeEvent::getTimestamp(), dtn::core::Node::getURI(), IBRCOMMON_LOGGER_DEBUG, IBRCOMMON_LOGGER_LEVEL, ibrcommon::BloomFilter::insert(), dtn::core::NODE_AVAILABLE, dtn::core::NODE_UNAVAILABLE, dtn::routing::QueueBundleEvent::origin, ibrcommon::Queue< T >::push(), dtn::net::TransferAbortedEvent::reason, dtn::net::TransferAbortedEvent::REASON_BUNDLE_DELETED, dtn::net::TransferAbortedEvent::REASON_CONNECTION_DOWN, dtn::net::TransferAbortedEvent::REASON_REFUSED, dtn::net::TransferAbortedEvent::REASON_RETRY_LIMIT_REACHED, dtn::net::TransferAbortedEvent::REASON_UNDEFINED, dtn::routing::NeighborDatabase::NeighborEntry::releaseTransfer(), dtn::core::BundleStorage::remove(), dtn::routing::NeighborDatabase::setAvailable(), dtn::routing::NeighborDatabase::setUnavailable(), and dtn::data::BundleID::toString().

Here is the call graph for this function:

void dtn::routing::EpidemicRoutingExtension::run ( void   )  [protected]

The ExpireTask take care of expired bundles in the purge vector and triggers a broadcast of the summary vector.

SearchNextBundleTask triggers a search for a bundle to transfer to another host. This Task is generated by TransferCompleted, TransferAborted and node events.

push an epidemic info bundle to one neighbor

process a received bundle

Update the neighbor database with the received filter. The filter was sent by the owner, so we assign the contained summary vector to the EID of the sender of this bundle.

Definition at line 271 of file EpidemicRoutingExtension.cpp.

References dtn::routing::NeighborDatabase::NeighborEntry::_filter, dtn::routing::NeighborDatabase::NeighborEntry::_lastupdate, dtn::data::PrimaryBlock::_source, dtn::routing::NeighborDatabase::NeighborEntry::acquireTransfer(), dtn::routing::BundleSummary::add(), dtn::data::BundleList::expire(), dtn::core::BundleStorage::get(), dtn::routing::NeighborDatabase::get(), dtn::routing::NeighborDatabase::getAvailable(), dtn::data::Bundle::getBlock(), dtn::routing::SummaryVector::getBloomFilter(), dtn::core::BundleStorage::getByDestination(), dtn::core::BundleStorage::getByFilter(), ibrcommon::Queue< T >::getnpop(), dtn::routing::EpidemicRoutingExtension::EpidemicExtensionBlock::getPurgeVector(), dtn::routing::BaseRouter::Extension::getRouter(), dtn::routing::BaseRouter::getStorage(), dtn::routing::EpidemicRoutingExtension::EpidemicExtensionBlock::getSummaryVector(), IBRCOMMON_LOGGER, IBRCOMMON_LOGGER_DEBUG, ibrcommon::Queue< T >::push(), dtn::routing::NeighborDatabase::NeighborEntry::releaseTransfer(), dtn::core::BundleStorage::remove(), dtn::data::BundleID::toString(), dtn::routing::BaseRouter::transferTo(), dtn::routing::NeighborDatabase::updateBundles(), ibrcommon::Exception::what(), and ibrcommon::Thread::yield().

Here is the call graph for this function:

void dtn::routing::EpidemicRoutingExtension::stopExtension (  )  [virtual]

Definition at line 76 of file EpidemicRoutingExtension.cpp.

References ibrcommon::Queue< T >::abort().

Here is the call graph for this function:

void dtn::routing::EpidemicRoutingExtension::update ( std::string &  name,
std::string &  data 
) [virtual]

Updates an discovery service block with current values

Parameters:
name 
data 

Implements dtn::net::DiscoveryServiceProvider.

Definition at line 81 of file EpidemicRoutingExtension.cpp.


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