Author: toad
Date: 2006-11-29 21:32:16 +0000 (Wed, 29 Nov 2006)
New Revision: 11119

Modified:
   trunk/freenet/src/freenet/node/PeerNode.java
Log:
N2NTM related:
Make extraPeerDataFileNumbers a HashSet.
Comments.
Better use of File().
Log an error if cannot delete file.

Modified: trunk/freenet/src/freenet/node/PeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerNode.java        2006-11-29 20:08:59 UTC 
(rev 11118)
+++ trunk/freenet/src/freenet/node/PeerNode.java        2006-11-29 21:32:16 UTC 
(rev 11119)
@@ -288,7 +288,7 @@
     private boolean allowLocalAddresses;

     /** Extra peer data file numbers */
-    private Vector extraPeerDataFileNumbers;
+    private HashSet extraPeerDataFileNumbers;

     /** Average proportion of requests which are rejected or timed out */
     private TimeDecayingRunningAverage pRejected;
@@ -617,8 +617,7 @@
         privateDarknetCommentFileNumber = -1;

                // Setup the extraPeerDataFileNumbers
-               extraPeerDataFileNumbers = new Vector();
-               extraPeerDataFileNumbers.removeAllElements();
+               extraPeerDataFileNumbers = new HashSet();

                // Setup the queuedToSendN2NTMExtraPeerDataFileNumbers
                queuedToSendN2NTMExtraPeerDataFileNumbers = new HashSet();
@@ -2546,9 +2545,7 @@
                                continue;
                        }
                        synchronized(extraPeerDataFileNumbers) {
-                               
if(!extraPeerDataFileNumbers.contains(fileNumber)) {
-                                       
extraPeerDataFileNumbers.addElement(fileNumber);
-                               }
+                               extraPeerDataFileNumbers.add(fileNumber);
                        }
                        readResult = 
readExtraPeerDataFile(extraPeerDataFiles[i], fileNumber.intValue());
                        if(!readResult) {
@@ -2711,6 +2708,7 @@
                Integer[] localFileNumbers = null;
                int nextFileNumber = 0;
                synchronized(extraPeerDataFileNumbers) {
+                       // Find the first free slot
                        localFileNumbers = (Integer[]) 
extraPeerDataFileNumbers.toArray(new Integer[extraPeerDataFileNumbers.size()]);
                        Arrays.sort(localFileNumbers);
                        for (int i = 0; i < localFileNumbers.length; i++) {
@@ -2719,7 +2717,7 @@
                                }
                                nextFileNumber = localFileNumbers[i].intValue() 
+ 1;
                        }
-                       extraPeerDataFileNumbers.addElement(new 
Integer(nextFileNumber));
+                       extraPeerDataFileNumbers.add(new 
Integer(nextFileNumber));
                }
                FileOutputStream fos;
                File extraPeerDataFile = new 
File(extraPeerDataPeerDir.getPath()+File.separator+nextFileNumber);
@@ -2753,7 +2751,7 @@

        public void deleteExtraPeerDataFile(int fileNumber) {
                String extraPeerDataDirPath = node.getExtraPeerDataDir();
-               File extraPeerDataPeerDir = new 
File(extraPeerDataDirPath+File.separator+getIdentityString());
+               File extraPeerDataPeerDir = new File(extraPeerDataDirPath, 
getIdentityString());
                if(!extraPeerDataPeerDir.exists()) {
                        Logger.error(this, "Extra peer data directory for peer 
does not exist: "+extraPeerDataPeerDir.getPath());
                        return;
@@ -2762,17 +2760,19 @@
                        Logger.error(this, "Extra peer data directory for peer 
not a directory: "+extraPeerDataPeerDir.getPath());
                        return;
                }
-               File extraPeerDataFile = new 
File(extraPeerDataDirPath+File.separator+getIdentityString()+File.separator+fileNumber);
+               File extraPeerDataFile = new File(extraPeerDataPeerDir, 
Integer.toString(fileNumber));
                if(!extraPeerDataFile.exists()) {
                        Logger.error(this, "Extra peer data file for peer does 
not exist: "+extraPeerDataFile.getPath());
                        return;
                }
                synchronized(extraPeerDataFileNumbers) {
-                       if(extraPeerDataFileNumbers.contains(new 
Integer(fileNumber))) {
-                               extraPeerDataFileNumbers.removeElement(new 
Integer(fileNumber));
+                       extraPeerDataFileNumbers.remove(new 
Integer(fileNumber));
+               }
+               if(!extraPeerDataFile.delete()) {
+                       if(extraPeerDataFile.exists()) {
+                               Logger.error(this, "Cannot delete file 
"+extraPeerDataFile+" after sending message to "+getPeer()+" - it may be resent 
on resting the node");
                        }
                }
-               extraPeerDataFile.delete();
        }

        public void removeExtraPeerDataDir() {


Reply via email to