r26825 - in trunk/freenet/src/freenet: node support

[email protected] Wed, 15 Apr 2009 06:34:15 +0000
Newsgroups gmane.network.freenet.cvs
Message-ID <[email protected]>
Author: j16sdiz
Date: 2009-04-15 06:34:14 +0000 (Wed, 15 Apr 2009)
New Revision: 26825

Modified:
   trunk/freenet/src/freenet/node/PacketTracker.java
   trunk/freenet/src/freenet/support/UpdatableSortedLinkedList.java
Log:
Generic-related warnings (PacketTracker.java)

Modified: trunk/freenet/src/freenet/node/PacketTracker.java
===================================================================
--- trunk/freenet/src/freenet/node/PacketTracker.java	2009-04-15 06:33:51 UTC (rev 26824)
+++ trunk/freenet/src/freenet/node/PacketTracker.java	2009-04-15 06:34:14 UTC (rev 26825)
@@ -21,7 +21,6 @@
 import freenet.support.Logger;
 import freenet.support.ReceivedPacketNumbers;
 import freenet.support.TimeUtil;
-import freenet.support.UpdatableSortedLinkedListItem;
 import freenet.support.UpdatableSortedLinkedListKilledException;
 import freenet.support.UpdatableSortedLinkedListWithForeignIndex;
 import freenet.support.WouldBlockException;
@@ -250,7 +249,8 @@
 			return next;
 		}
 
-		public final T setNext(Item<?> i) {
+		@SuppressWarnings("unchecked")
+        public final T setNext(Item<?> i) {
 			T old = next;
 			next = (T)i;
 			return old;
@@ -260,7 +260,8 @@
 			return prev;
 		}
 
-		public T setPrev(Item<?> i) {
+		@SuppressWarnings("unchecked")
+        public T setPrev(Item<?> i) {
 			T old = prev;
 			prev = (T)i;
 			return old;
@@ -808,18 +809,18 @@
 	 * @throws NotConnectedException If the peer is no longer connected.
 	 */
 	public int[] grabResendRequests() throws NotConnectedException {
-		UpdatableSortedLinkedListItem[] items;
+		QueuedResendRequest[] items;
 		int[] packetNumbers;
 		int realLength;
 		long now = System.currentTimeMillis();
 		try {
 			synchronized(resendRequestQueue) {
-				items = resendRequestQueue.toArray();
+				items = resendRequestQueue.toArray(new QueuedResendRequest[resendRequestQueue.size()]);
 				int length = items.length;
 				packetNumbers = new int[length];
 				realLength = 0;
 				for(int i = 0; i < length; i++) {
-					QueuedResendRequest qrr = (QueuedResendRequest) items[i];
+					QueuedResendRequest qrr = items[i];
 					if(packetNumbersReceived.contains(qrr.packetNumber)) {
 						if(logMINOR)
 							Logger.minor(this, "Have already seen " + qrr.packetNumber + ", removing from resend list");
@@ -844,7 +845,7 @@
 	}
 
 	public int[] grabAckRequests() throws NotConnectedException, StillNotAckedException {
-		UpdatableSortedLinkedListItem[] items;
+		QueuedAckRequest[] items;
 		int[] packetNumbers;
 		int realLength;
 		if(logMINOR)
@@ -852,12 +853,12 @@
 		try {
 			synchronized(ackRequestQueue) {
 				long now = System.currentTimeMillis();
-				items = ackRequestQueue.toArray();
+				items = ackRequestQueue.toArray(new QueuedAckRequest[ackRequestQueue.size()]);
 				int length = items.length;
 				packetNumbers = new int[length];
 				realLength = 0;
 				for(int i = 0; i < length; i++) {
-					QueuedAckRequest qr = (QueuedAckRequest) items[i];
+					QueuedAckRequest qr = items[i];
 					int packetNumber = qr.packetNumber;
 					if(qr.activeTime <= now) {
 						if(sentPacketsContents.get(packetNumber) == null) {

Modified: trunk/freenet/src/freenet/support/UpdatableSortedLinkedList.java
===================================================================
--- trunk/freenet/src/freenet/support/UpdatableSortedLinkedList.java	2009-04-15 06:33:51 UTC (rev 26824)
+++ trunk/freenet/src/freenet/support/UpdatableSortedLinkedList.java	2009-04-15 06:34:14 UTC (rev 26825)
@@ -220,6 +220,25 @@
     }
 
     /**
+     * @return an array, in order, of the elements in the list
+     * @throws UpdatableSortedLinkedListKilledException 
+     */
+    @SuppressWarnings("unchecked")
+    public synchronized <E> E[] toArray(E[] array) throws UpdatableSortedLinkedListKilledException {
+    	if(killed) throw new UpdatableSortedLinkedListKilledException();
+        int size = list.size();
+        if(size < 0)
+        	throw new IllegalStateException("list.size() = "+size+" for "+this);
+        	
+        int i=0;
+        for(Enumeration<T> e = list.elements();e.hasMoreElements();) {
+            array[i++] = (E) e.nextElement();
+            //Logger.minor(this, "["+(i-1)+"] = "+output[i-1]);
+        }
+        return array;
+    }
+    
+    /**
      * @return Does the list contain that item?
      */
     public synchronized boolean contains(T item) {