#include <EpidemicRoutingExtension.h>
Inherits dtn::routing::BaseRouter::ThreadedExtension, and dtn::net::DiscoveryServiceProvider.

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 () |
Definition at line 33 of file EpidemicRoutingExtension.h.
| dtn::routing::EpidemicRoutingExtension::EpidemicRoutingExtension | ( | ) |
Definition at line 49 of file EpidemicRoutingExtension.cpp.
References dtn::data::PrimaryBlock::_destination, dtn::data::PrimaryBlock::_lifetime, dtn::data::PrimaryBlock::_source, dtn::core::BundleStorage::addToFilter(), dtn::daemon::Configuration::getInstance(), dtn::daemon::Configuration::getNodename(), dtn::routing::BaseRouter::Extension::getRouter(), dtn::routing::BaseRouter::getStorage(), IBRCOMMON_LOGGER, dtn::core::BundleCore::local, and dtn::data::Bundle::push_back().

| dtn::routing::EpidemicRoutingExtension::~EpidemicRoutingExtension | ( | ) |
Definition at line 70 of file EpidemicRoutingExtension.cpp.
References ibrcommon::JoinableThread::join(), and ibrcommon::JoinableThread::stop().

| bool dtn::routing::EpidemicRoutingExtension::__cancellation | ( | ) | [protected] |
Definition at line 265 of file EpidemicRoutingExtension.cpp.
References ibrcommon::Queue< T >::abort().

| 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().

| 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().

| void dtn::routing::EpidemicRoutingExtension::stopExtension | ( | ) | [virtual] |
Definition at line 76 of file EpidemicRoutingExtension.cpp.
References ibrcommon::Queue< T >::abort().

| void dtn::routing::EpidemicRoutingExtension::update | ( | std::string & | name, | |
| std::string & | data | |||
| ) | [virtual] |
Updates an discovery service block with current values
| name | ||
| data |
Implements dtn::net::DiscoveryServiceProvider.
Definition at line 81 of file EpidemicRoutingExtension.cpp.
1.7.1