Author: zothar
Date: 2006-05-29 19:42:31 +0000 (Mon, 29 May 2006)
New Revision: 8931
Added:
trunk/freenet/src/freenet/node/DNSRequester.java
Log:
I know I would forget this and made a mental note and then couldn't remember
what the mental note said... :)
Added: trunk/freenet/src/freenet/node/DNSRequester.java
===================================================================
--- trunk/freenet/src/freenet/node/DNSRequester.java 2006-05-29 19:39:44 UTC
(rev 8930)
+++ trunk/freenet/src/freenet/node/DNSRequester.java 2006-05-29 19:42:31 UTC
(rev 8931)
@@ -0,0 +1,68 @@
+package freenet.node;
+
+import freenet.support.Logger;
+
+/**
+ * @author amphibian
+ *
+ * Thread that does DNS queries for unconnected peers
+ */
+public class DNSRequester implements Runnable {
+
+ final Thread myThread;
+ final Node node;
+ private long lastLogTime = 0;
+
+ DNSRequester(Node node) {
+ this.node = node;
+ myThread = new Thread(this, "DNSRequester thread for
"+node.portNumber);
+ myThread.setDaemon(true);
+ }
+
+ void start() {
+ Logger.normal(this,"Starting the DNSRequester
thread");
+ myThread.start();
+ }
+
+ public void run() {
+ while(true) {
+ try {
+ realRun();
+ } catch (OutOfMemoryError e) {
+ Runtime r = Runtime.getRuntime();
+ long usedAtStart = r.totalMemory() - r.freeMemory();
+ System.gc();
+ System.runFinalization();
+ System.gc();
+ System.runFinalization();
+ System.err.println(e.getClass());
+ System.err.println(e.getMessage());
+ e.printStackTrace();
+ long usedNow = r.totalMemory() - r.freeMemory();
+ Logger.error(this, "Caught "+e, e);
+ Logger.error(this, "Used: "+usedAtStart+" now "+usedNow);
+ } catch (Throwable t) {
+ Logger.error(this, "Caught in DNSRequester: "+t, t);
+ }
+ }
+ }
+
+ private void realRun() {
+ PeerManager pm = node.peers;
+ PeerNode[] nodes = pm.myPeers;
+ long now = System.currentTimeMillis();
+ if((now - lastLogTime) > 1000) {
+ Logger.normal(this, "Processing DNS Requests (log rate-limited)");
+ lastLogTime = now;
+ }
+ for(int i=0;i<nodes.length;i++) {
+ PeerNode pn = nodes[i];
+ if(!pn.isConnected()) {
+ // Not connected
+ // Try new DNS lookup
+ // **FIXME** Logger.normal(this, "Calling
myabeUpdateHandshakeIPs() for peer '"+pn.getPeer()+"' named
'"+pn.getName()+"'");
+ pn.maybeUpdateHandshakeIPs();
+ }
+ }
+ }
+}