On Sun, Nov 09, 2003 at 12:33:48PM -0800, Brandon Low wrote:
> 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.

This needs more testing, but looks good. Using the number of successes
is fine as long as it's a last resort. consecutiveConnectionFailures is
0 if we have any open connections, even if we have some conn failures;
I'm uncertain whether moving it below lastSuccess is entirely valid but
hopefully it will work better in practice.
> 
> 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

-- 
Matthew J Toseland - [EMAIL PROTECTED]
Freenet Project Official Codemonkey - http://freenetproject.org/
ICTHUS - Nothing is impossible. Our Boss says so.

Attachment: signature.asc
Description: Digital signature

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

Reply via email to