fix geoip scan of all routerinfos at startup

This commit is contained in:
zzz
2009-05-24 17:03:50 +00:00
parent e82898c988
commit 47e32c82fc
4 changed files with 7 additions and 7 deletions

View File

@ -58,6 +58,7 @@ class DummyNetworkDatabaseFacade extends NetworkDatabaseFacade {
_routers.remove(dbEntry); _routers.remove(dbEntry);
} }
public Set<Hash> getAllRouters() { return new HashSet(_routers.keySet()); }
public Set findNearestRouters(Hash key, int maxNumRouters, Set peersToIgnore) { return new HashSet(_routers.values()); } public Set findNearestRouters(Hash key, int maxNumRouters, Set peersToIgnore) { return new HashSet(_routers.values()); }
public void renderStatusHTML(Writer out) throws IOException {} public void renderStatusHTML(Writer out) throws IOException {}

View File

@ -55,6 +55,7 @@ public abstract class NetworkDatabaseFacade implements Service {
public abstract void unpublish(LeaseSet localLeaseSet); public abstract void unpublish(LeaseSet localLeaseSet);
public abstract void fail(Hash dbEntry); public abstract void fail(Hash dbEntry);
public abstract Set<Hash> getAllRouters();
public int getKnownRouters() { return 0; } public int getKnownRouters() { return 0; }
public int getKnownLeaseSets() { return 0; } public int getKnownLeaseSets() { return 0; }
public void renderRouterInfoHTML(Writer out, String s) throws IOException {} public void renderRouterInfoHTML(Writer out, String s) throws IOException {}

View File

@ -311,7 +311,7 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade {
} }
/** get the hashes for all known routers */ /** get the hashes for all known routers */
Set getAllRouters() { public Set<Hash> getAllRouters() {
if (!_initialized) return new HashSet(0); if (!_initialized) return new HashSet(0);
Set keys = _ds.getKeys(); Set keys = _ds.getKeys();
Set rv = new HashSet(keys.size()); Set rv = new HashSet(keys.size());

View File

@ -375,15 +375,13 @@ public class CommSystemFacadeImpl extends CommSystemFacade {
/** /**
* Collect the IPs for all routers in the DB, and queue them for lookup, * Collect the IPs for all routers in the DB, and queue them for lookup,
* then fire off the periodic lookup task for the first time. * then fire off the periodic lookup task for the first time.
*
* We could use getAllRouters() if it were public, and that would be faster, but
* we only do this once.
*/ */
private class QueueAll implements SimpleTimer.TimedEvent { private class QueueAll implements SimpleTimer.TimedEvent {
public void timeReached() { public void timeReached() {
Set routers = _context.netDb().findNearestRouters(_context.routerHash(), _context.netDb().getKnownRouters(), null); for (Iterator<Hash> iter = _context.netDb().getAllRouters().iterator(); iter.hasNext(); ) {
for (Iterator iter = routers.iterator(); iter.hasNext(); ) { RouterInfo ri = _context.netDb().lookupRouterInfoLocally(iter.next());
RouterInfo ri = (RouterInfo) iter.next(); if (ri == null)
continue;
String host = getIPString(ri); String host = getIPString(ri);
if (host == null) if (host == null)
continue; continue;