Update of /cvsroot/freenet/freenet/src/freenet/node/rt
In directory sc8-pr-cvs1:/tmp/cvs-serv21891/freenet/src/freenet/node/rt

Modified Files:
        NGRoutingTable.java 
Log Message:
Change how rt nodes are removed from the rt.  This sorting seems to make more sense 
logically, and in practice, it's significantly improved the apparent quality of my 
route.

Index: NGRoutingTable.java
===================================================================
RCS file: /cvsroot/freenet/freenet/src/freenet/node/rt/NGRoutingTable.java,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -w -r1.31 -r1.32
--- NGRoutingTable.java 7 Nov 2003 18:17:14 -0000       1.31
+++ NGRoutingTable.java 9 Nov 2003 20:33:43 -0000       1.32
@@ -425,36 +425,41 @@
                final long lastSuccess;
                final long lastAccess;
                final long createdTime;
-               final int consecutiveConnectionFailures; // zero if connected
+               final int successes;
+               final int consecutiveConnectionFailures; //0 if connected
                
                public String toString() {
                        return "NGRT.MyDiscardValue: lastSuccess="+lastSuccess+
-                               ", lastAccess="+lastAccess+", connFailures="+
-                               consecutiveConnectionFailures;
+                               ", lastAccess="+lastAccess+", successes="+
+                               successes;
                }
                
                MyDiscardValue(long success, long access, long created,
-                                          int connFailures) {
+                                          int successes, int connFailures) {
                        lastSuccess = success;
                        lastAccess = access;
-                       consecutiveConnectionFailures = connFailures;
+                       this.successes = successes;
                        createdTime = created;
+                       consecutiveConnectionFailures = connFailures;
                }
                
                public int compareTo(Object c) {
-                       MyDiscardValue o = (MyDiscardValue)c;
                        // Upside down, like Ticker, because this is on a Heap
-                       // Higher = more failures = worse
-                       if(consecutiveConnectionFailures < 
-                          o.consecutiveConnectionFailures) return -1;
-                       if(consecutiveConnectionFailures > 
-                          o.consecutiveConnectionFailures) return 1;
+                       MyDiscardValue o = (MyDiscardValue)c;
                        // Higher = more recent = better
                        // But if its success was before our creation, ignore it
                        if(lastSuccess < o.lastSuccess &&
                           lastSuccess > o.createdTime) return 1;
                        if(lastSuccess > o.lastSuccess &&
                           o.lastSuccess > createdTime) return -1;
+                       // Higher = more failures = worse
+                       if(consecutiveConnectionFailures > 
+                          o.consecutiveConnectionFailures) return 1;
+                       if(consecutiveConnectionFailures < 
+                          o.consecutiveConnectionFailures) return -1;
+                       // Higher = more successes = better
+                       if(successes < o.successes) return 1;
+                       if(successes > o.successes) return -1;
                        // ALL nodes have a lastAccess time - they get one on startup
                        // So it is highly unlikely that this will fail
                        if(lastAccess < o.lastAccess) return 1;
@@ -495,9 +500,9 @@
                        }
                        ret = new MyDiscardValue(ne.lastSuccessTime(), 
                                                                         
ne.lastAccessedTime(), ne.createdTime(), 
-                                                                        x);
+                                                                        
ne.successes(),x);
                } else
-                       ret = new MyDiscardValue(-1, -1, -1, 0);
+                       ret = new MyDiscardValue(-1, -1, -1, 0, 0);
                Core.logger.log(this, "Returning "+ret,
                                                Logger.DEBUG);
                return ret;

_______________________________________________
cvs mailing list
[EMAIL PROTECTED]
http://dodo.freenetproject.org/cgi-bin/mailman/listinfo/cvs

Reply via email to