Author: j16sdiz Date: 2008-04-09 16:02:04 +0000 (Wed, 09 Apr 2008) New Revision: 19116
Modified: trunk/freenet/src/freenet/node/KeyTracker.java Log: use java.util.List instead of freenet.support.DoublyLinkedList Modified: trunk/freenet/src/freenet/node/KeyTracker.java =================================================================== --- trunk/freenet/src/freenet/node/KeyTracker.java 2008-04-09 16:01:47 UTC (rev 19115) +++ trunk/freenet/src/freenet/node/KeyTracker.java 2008-04-09 16:02:04 UTC (rev 19116) @@ -3,9 +3,10 @@ * http://www.gnu.org/ for further details of the GPL. */ package freenet.node; -import java.util.Enumeration; import java.util.HashSet; import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; import java.util.Vector; import freenet.crypt.BlockCipher; @@ -14,7 +15,6 @@ import freenet.io.comm.NotConnectedException; import freenet.io.xfer.PacketThrottle; import freenet.support.DoublyLinkedList; -import freenet.support.DoublyLinkedListImpl; import freenet.support.IndexableUpdatableSortedLinkedListItem; import freenet.support.LimitedRangeIntByteArrayMap; import freenet.support.LimitedRangeIntByteArrayMapElement; @@ -59,14 +59,14 @@ * and when they become urgent. We always add to the end, * and we always remove from the beginning, so should always * be consistent. */ - private final DoublyLinkedList ackQueue; + private final List ackQueue; /** Serial numbers of packets that we have forgotten. Usually * when we have forgotten a packet it just means that it has * been shifted to another KeyTracker because this one was * deprecated; the messages will get through in the end. */ - private final DoublyLinkedList forgottenQueue; + private final List forgottenQueue; /** The highest incoming serial number we have ever seen * from the other side. Includes actual packets and resend @@ -106,8 +106,8 @@ this.pn = pn; this.sessionCipher = cipher; this.sessionKey = sessionKey; - ackQueue = new DoublyLinkedListImpl(); - forgottenQueue = new DoublyLinkedListImpl(); + ackQueue = new LinkedList(); + forgottenQueue = new LinkedList(); highestSeenIncomingSerialNumber = -1; // give some leeway sentPacketsContents = new LimitedRangeIntByteArrayMap(128); @@ -162,7 +162,7 @@ if(logMINOR) Logger.minor(this, "Queueing ack for "+seqNumber); QueuedAck qa = new QueuedAck(seqNumber); synchronized(ackQueue) { - ackQueue.push(qa); + ackQueue.add(qa); } // Will go urgent in 200ms } @@ -179,11 +179,11 @@ } QueuedForgotten qf = new QueuedForgotten(seqNumber); synchronized(forgottenQueue) { - forgottenQueue.push(qf); + forgottenQueue.add(qf); } } - class PacketActionItem { // anyone got a better name? + static class PacketActionItem { // anyone got a better name? /** Packet sequence number */ int packetNumber; /** Time at which this packet's ack or resend request becomes urgent @@ -195,13 +195,7 @@ } } - class QueuedAck extends PacketActionItem implements DoublyLinkedList.Item { - void sent() { - synchronized(ackQueue) { - ackQueue.remove(this); - } - } - + private final static class QueuedAck extends PacketActionItem { QueuedAck(int packet) { long now = System.currentTimeMillis(); packetNumber = packet; @@ -210,51 +204,10 @@ */ urgentTime = now + 200; } - - Item prev; - Item next; - - public Item getNext() { - return next; - } - - public Item setNext(Item i) { - Item old = next; - next = i; - return old; - } - - public Item getPrev() { - return prev; - } - - public Item setPrev(Item i) { - Item old = prev; - prev = i; - return old; - } - - private DoublyLinkedList parent; - - public DoublyLinkedList getParent() { - return parent; - } - - public DoublyLinkedList setParent(DoublyLinkedList l) { - DoublyLinkedList old = parent; - parent = l; - return old; - } } // FIXME this is almost identical to QueuedAck, coalesce the classes - class QueuedForgotten extends PacketActionItem implements DoublyLinkedList.Item { - void sent() { - synchronized(forgottenQueue) { - forgottenQueue.remove(this); - } - } - + private final static class QueuedForgotten extends PacketActionItem { QueuedForgotten(int packet) { long now = System.currentTimeMillis(); packetNumber = packet; @@ -263,41 +216,6 @@ */ urgentTime = now + 500; } - - Item prev; - Item next; - - public Item getNext() { - return next; - } - - public Item setNext(Item i) { - Item old = next; - next = i; - return old; - } - - public Item getPrev() { - return prev; - } - - public Item setPrev(Item i) { - Item old = prev; - prev = i; - return old; - } - - private DoublyLinkedList parent; - - public DoublyLinkedList getParent() { - return parent; - } - - public DoublyLinkedList setParent(DoublyLinkedList l) { - DoublyLinkedList old = parent; - parent = l; - return old; - } } private abstract class BaseQueuedResend extends PacketActionItem implements IndexableUpdatableSortedLinkedListItem { @@ -718,10 +636,11 @@ */ private boolean queuedAck(int packetNumber) { synchronized(ackQueue) { - for(Enumeration e=ackQueue.elements();e.hasMoreElements();) { - QueuedAck qa = (QueuedAck) e.nextElement(); - if(qa.packetNumber == packetNumber) return true; - } + Iterator it = ackQueue.iterator(); + while (it.hasNext()) { + QueuedAck qa = (QueuedAck) it.next(); + if(qa.packetNumber == packetNumber) return true; + } } return false; } @@ -797,11 +716,13 @@ int length = forgottenQueue.size(); acks = new int[length]; int i=0; - for(Enumeration e=forgottenQueue.elements();e.hasMoreElements();) { - QueuedForgotten ack = (QueuedForgotten)e.nextElement(); + + Iterator it = forgottenQueue.iterator(); + while (it.hasNext()) { + QueuedForgotten ack = (QueuedForgotten) it.next(); acks[i++] = ack.packetNumber; if(logMINOR) Logger.minor(this, "Grabbing ack "+ack.packetNumber+" from "+this); - ack.sent(); + it.remove(); // sent } } return acks; @@ -828,11 +749,12 @@ int length = ackQueue.size(); acks = new int[length]; int i=0; - for(Enumeration e=ackQueue.elements();e.hasMoreElements();) { - QueuedAck ack = (QueuedAck)e.nextElement(); + Iterator it = ackQueue.iterator(); + while (it.hasNext()) { + QueuedAck ack = (QueuedAck) it.next(); acks[i++] = ack.packetNumber; if(logMINOR) Logger.minor(this, "Grabbing ack "+ack.packetNumber+" from "+this); - ack.sent(); + it.remove(); // sent } } return acks; @@ -928,7 +850,7 @@ long earliestTime = Long.MAX_VALUE; synchronized(ackQueue) { if(!ackQueue.isEmpty()) { - QueuedAck qa = (QueuedAck)ackQueue.head(); + QueuedAck qa = (QueuedAck) ackQueue.get(0); earliestTime = qa.urgentTime; } }
