comparator cleanups

This commit is contained in:
zzz
2012-08-13 15:08:06 +00:00
parent cfcafd2ba3
commit e9cc85141c
2 changed files with 20 additions and 31 deletions

View File

@@ -8,6 +8,7 @@ import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel; import java.nio.channels.SocketChannel;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.text.NumberFormat; import java.text.NumberFormat;
import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
@@ -848,20 +849,15 @@ public class NTCPTransport extends TransportImpl {
rv = AlphaComparator.instance(); rv = AlphaComparator.instance();
} }
if (sortFlags < 0) if (sortFlags < 0)
rv = new InverseComparator(rv); rv = Collections.reverseOrder(rv);
return rv; return rv;
} }
private static class AlphaComparator extends PeerComparator { private static class AlphaComparator extends PeerComparator {
private static final AlphaComparator _instance = new AlphaComparator(); private static final AlphaComparator _instance = new AlphaComparator();
public static final AlphaComparator instance() { return _instance; } public static final AlphaComparator instance() { return _instance; }
} }
private static class InverseComparator implements Comparator {
private Comparator _comp;
public InverseComparator(Comparator comp) { _comp = comp; }
public int compare(Object lhs, Object rhs) {
return -1 * _comp.compare(lhs, rhs);
}
}
private static class PeerComparator implements Comparator { private static class PeerComparator implements Comparator {
public int compare(Object lhs, Object rhs) { public int compare(Object lhs, Object rhs) {
if ( (lhs == null) || (rhs == null) || !(lhs instanceof NTCPConnection) || !(rhs instanceof NTCPConnection)) if ( (lhs == null) || (rhs == null) || !(lhs instanceof NTCPConnection) || !(rhs instanceof NTCPConnection))

View File

@@ -6,6 +6,7 @@ import java.net.InetAddress;
import java.net.UnknownHostException; import java.net.UnknownHostException;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
@@ -1741,7 +1742,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
break; break;
} }
if (sortFlags < 0) if (sortFlags < 0)
rv = new InverseComparator(rv); rv = Collections.reverseOrder(rv);
return rv; return rv;
} }
@@ -1778,11 +1779,11 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
public static final RateInComparator instance() { return _instance; } public static final RateInComparator instance() { return _instance; }
@Override @Override
public int compare(PeerState l, PeerState r) { public int compare(PeerState l, PeerState r) {
long rv = l.getReceiveBps() - r.getReceiveBps(); int rv = l.getReceiveBps() - r.getReceiveBps();
if (rv == 0) // fallback on alpha if (rv == 0) // fallback on alpha
return super.compare(l, r); return super.compare(l, r);
else else
return (int)rv; return rv;
} }
} }
private static class RateOutComparator extends PeerComparator { private static class RateOutComparator extends PeerComparator {
@@ -1790,11 +1791,11 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
public static final RateOutComparator instance() { return _instance; } public static final RateOutComparator instance() { return _instance; }
@Override @Override
public int compare(PeerState l, PeerState r) { public int compare(PeerState l, PeerState r) {
long rv = l.getSendBps() - r.getSendBps(); int rv = l.getSendBps() - r.getSendBps();
if (rv == 0) // fallback on alpha if (rv == 0) // fallback on alpha
return super.compare(l, r); return super.compare(l, r);
else else
return (int)rv; return rv;
} }
} }
private static class UptimeComparator extends PeerComparator { private static class UptimeComparator extends PeerComparator {
@@ -1826,11 +1827,11 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
public static final CwndComparator instance() { return _instance; } public static final CwndComparator instance() { return _instance; }
@Override @Override
public int compare(PeerState l, PeerState r) { public int compare(PeerState l, PeerState r) {
long rv = l.getSendWindowBytes() - r.getSendWindowBytes(); int rv = l.getSendWindowBytes() - r.getSendWindowBytes();
if (rv == 0) // fallback on alpha if (rv == 0) // fallback on alpha
return super.compare(l, r); return super.compare(l, r);
else else
return (int)rv; return rv;
} }
} }
private static class SsthreshComparator extends PeerComparator { private static class SsthreshComparator extends PeerComparator {
@@ -1838,11 +1839,11 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
public static final SsthreshComparator instance() { return _instance; } public static final SsthreshComparator instance() { return _instance; }
@Override @Override
public int compare(PeerState l, PeerState r) { public int compare(PeerState l, PeerState r) {
long rv = l.getSlowStartThreshold() - r.getSlowStartThreshold(); int rv = l.getSlowStartThreshold() - r.getSlowStartThreshold();
if (rv == 0) // fallback on alpha if (rv == 0) // fallback on alpha
return super.compare(l, r); return super.compare(l, r);
else else
return (int)rv; return rv;
} }
} }
private static class RTTComparator extends PeerComparator { private static class RTTComparator extends PeerComparator {
@@ -1850,11 +1851,11 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
public static final RTTComparator instance() { return _instance; } public static final RTTComparator instance() { return _instance; }
@Override @Override
public int compare(PeerState l, PeerState r) { public int compare(PeerState l, PeerState r) {
long rv = l.getRTT() - r.getRTT(); int rv = l.getRTT() - r.getRTT();
if (rv == 0) // fallback on alpha if (rv == 0) // fallback on alpha
return super.compare(l, r); return super.compare(l, r);
else else
return (int)rv; return rv;
} }
} }
private static class DevComparator extends PeerComparator { private static class DevComparator extends PeerComparator {
@@ -1874,11 +1875,11 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
public static final RTOComparator instance() { return _instance; } public static final RTOComparator instance() { return _instance; }
@Override @Override
public int compare(PeerState l, PeerState r) { public int compare(PeerState l, PeerState r) {
long rv = l.getRTO() - r.getRTO(); int rv = l.getRTO() - r.getRTO();
if (rv == 0) // fallback on alpha if (rv == 0) // fallback on alpha
return super.compare(l, r); return super.compare(l, r);
else else
return (int)rv; return rv;
} }
} }
private static class MTUComparator extends PeerComparator { private static class MTUComparator extends PeerComparator {
@@ -1886,11 +1887,11 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
public static final MTUComparator instance() { return _instance; } public static final MTUComparator instance() { return _instance; }
@Override @Override
public int compare(PeerState l, PeerState r) { public int compare(PeerState l, PeerState r) {
long rv = l.getMTU() - r.getMTU(); int rv = l.getMTU() - r.getMTU();
if (rv == 0) // fallback on alpha if (rv == 0) // fallback on alpha
return super.compare(l, r); return super.compare(l, r);
else else
return (int)rv; return rv;
} }
} }
private static class SendCountComparator extends PeerComparator { private static class SendCountComparator extends PeerComparator {
@@ -1948,14 +1949,6 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
} }
} }
private static class InverseComparator implements Comparator {
private final Comparator _comp;
public InverseComparator(Comparator comp) { _comp = comp; }
public int compare(Object lhs, Object rhs) {
return -1 * _comp.compare(lhs, rhs);
}
}
private static void appendSortLinks(StringBuilder buf, String urlBase, int sortFlags, String descr, int ascending) { private static void appendSortLinks(StringBuilder buf, String urlBase, int sortFlags, String descr, int ascending) {
if (ascending == FLAG_ALPHA) { // 0 if (ascending == FLAG_ALPHA) { // 0
buf.append(" <a href=\"").append(urlBase).append("?sort=0" + buf.append(" <a href=\"").append(urlBase).append("?sort=0" +