/** "Remove matching deferred transmission entries." [DTN2] */ void remove_from_deferred(final Bundle bundle, int actions) { ContactManager cm = BundleDaemon.getInstance().contactmgr(); cm.get_lock().lock(); try { final LinkSet links = cm.links(); Iterator<Link> iter = links.iterator(); while (iter.hasNext()) { Link link = iter.next(); // "a bundle might be deleted immediately after being loaded // from storage, meaning that remove_from_deferred is called // before the deferred list is created (since the link isn't // fully set up yet). so just skip the link if there's no // router info, and therefore no deferred list" [DTN2] if (link.router_info() == null) { continue; } DeferredList deferred = deferred_list(link); ForwardingInfo info = deferred.find(bundle); if (info != null) { if ((info.action().getCode() & actions) > 0) { Log.d( TAG, String.format("removing bundle %s from link %s deferred list", bundle, link)); deferred.del(bundle); } } } } finally { cm.get_lock().unlock(); } }
@Override public void initialize(DTNConfiguration dtn_config) { Iterator<RoutesSetting.RouteEntry> itr = dtn_config.routes_setting().route_entries().iterator(); while (itr.hasNext()) { RoutesSetting.RouteEntry rentry = itr.next(); EndpointIDPattern pattern = new EndpointIDPattern(rentry.dest()); Link link = ContactManager.getInstance().find_link(rentry.link_id()); route_table_.add_entry(new RouteEntry(pattern, link)); } }