Author: toad
Date: 2005-11-10 14:48:26 +0000 (Thu, 10 Nov 2005)
New Revision: 7515

Modified:
   trunk/freenet/src/freenet/client/FileInserter.java
   trunk/freenet/src/freenet/client/HighLevelSimpleClientImpl.java
   trunk/freenet/src/freenet/client/InserterContext.java
   trunk/freenet/src/freenet/client/InserterException.java
   trunk/freenet/src/freenet/node/TextModeClientInterface.java
   trunk/freenet/src/freenet/node/Version.java
   trunk/freenet/src/freenet/support/PaddedEphemerallyEncryptedBucket.java
Log:
Make TMCI use HLSCI for inserts as well as requests.

Modified: trunk/freenet/src/freenet/client/FileInserter.java
===================================================================
--- trunk/freenet/src/freenet/client/FileInserter.java  2005-11-10 14:19:21 UTC 
(rev 7514)
+++ trunk/freenet/src/freenet/client/FileInserter.java  2005-11-10 14:48:26 UTC 
(rev 7515)
@@ -2,6 +2,7 @@

 import java.io.IOException;

+import freenet.client.events.SimpleBlockPutEvent;
 import freenet.keys.CHKEncodeException;
 import freenet.keys.ClientCHKBlock;
 import freenet.keys.FreenetURI;
@@ -111,6 +112,7 @@
         */
        private FreenetURI simplePutCHK(ClientCHKBlock chk, ClientMetadata 
clientMetadata) throws InserterException {
                try {
+                       ctx.eventProducer.produceEvent(new 
SimpleBlockPutEvent(chk.getClientKey()));
                        ctx.client.putCHK(chk);
                } catch (LowLevelPutException e) {
                        translateException(e);

Modified: trunk/freenet/src/freenet/client/HighLevelSimpleClientImpl.java
===================================================================
--- trunk/freenet/src/freenet/client/HighLevelSimpleClientImpl.java     
2005-11-10 14:19:21 UTC (rev 7514)
+++ trunk/freenet/src/freenet/client/HighLevelSimpleClientImpl.java     
2005-11-10 14:48:26 UTC (rev 7515)
@@ -76,7 +76,7 @@
        }

        public FreenetURI insert(InsertBlock insert) throws InserterException {
-               InserterContext context = new InserterContext(client, 
bucketFactory, random, SPLITFILE_INSERT_RETRIES, SPLITFILE_INSERT_THREADS);
+               InserterContext context = new InserterContext(client, 
bucketFactory, random, SPLITFILE_INSERT_RETRIES, SPLITFILE_INSERT_THREADS, 
globalEventProducer);
                FileInserter i = new FileInserter(context);
                return i.run(insert, false);
        }

Modified: trunk/freenet/src/freenet/client/InserterContext.java
===================================================================
--- trunk/freenet/src/freenet/client/InserterContext.java       2005-11-10 
14:19:21 UTC (rev 7514)
+++ trunk/freenet/src/freenet/client/InserterContext.java       2005-11-10 
14:48:26 UTC (rev 7515)
@@ -1,5 +1,6 @@
 package freenet.client;

+import freenet.client.events.ClientEventProducer;
 import freenet.crypt.RandomSource;
 import freenet.node.SimpleLowLevelClient;
 import freenet.support.BucketFactory;
@@ -15,9 +16,10 @@
        final short splitfileAlgorithm;
        final int maxInsertBlockRetries;
        final int maxSplitInsertThreads;
+       final ClientEventProducer eventProducer;

        public InserterContext(SimpleLowLevelClient client, BucketFactory bf, 
RandomSource random,
-                       int maxRetries, int maxThreads) {
+                       int maxRetries, int maxThreads, ClientEventProducer 
eventProducer) {
                this.client = client;
                this.bf = bf;
                this.random = random;
@@ -25,6 +27,7 @@
                splitfileAlgorithm = Metadata.SPLITFILE_ONION_STANDARD;
                this.maxInsertBlockRetries = maxRetries;
                this.maxSplitInsertThreads = maxThreads;
+               this.eventProducer = eventProducer;
        }

 }

Modified: trunk/freenet/src/freenet/client/InserterException.java
===================================================================
--- trunk/freenet/src/freenet/client/InserterException.java     2005-11-10 
14:19:21 UTC (rev 7514)
+++ trunk/freenet/src/freenet/client/InserterException.java     2005-11-10 
14:48:26 UTC (rev 7515)
@@ -62,6 +62,8 @@
                        return "Fatal errors in a splitfile insert";
                case TOO_MANY_RETRIES_IN_BLOCKS:
                        return "Could not insert splitfile: ran out of retries 
(nonfatal errors)";
+               case ROUTE_NOT_FOUND:
+                       return "Could not propagate the insert to enough nodes 
(normal on small networks, try fetching it anyway)";
                default:
                        return "Unknown error "+mode;
                }

Modified: trunk/freenet/src/freenet/node/TextModeClientInterface.java
===================================================================
--- trunk/freenet/src/freenet/node/TextModeClientInterface.java 2005-11-10 
14:19:21 UTC (rev 7514)
+++ trunk/freenet/src/freenet/node/TextModeClientInterface.java 2005-11-10 
14:48:26 UTC (rev 7515)
@@ -15,6 +15,8 @@
 import freenet.client.FetchException;
 import freenet.client.FetchResult;
 import freenet.client.HighLevelSimpleClient;
+import freenet.client.InsertBlock;
+import freenet.client.InserterException;
 import freenet.client.events.EventDumper;
 import freenet.crypt.RandomSource;
 import freenet.io.comm.PeerParseException;
@@ -22,10 +24,12 @@
 import freenet.keys.ClientCHK;
 import freenet.keys.ClientCHKBlock;
 import freenet.keys.FreenetURI;
+import freenet.support.ArrayBucket;
 import freenet.support.Bucket;
 import freenet.support.BucketTools;
 import freenet.support.Logger;
 import freenet.support.SimpleFieldSet;
+import freenet.support.io.FileBucket;

 /**
  * @author amphibian
@@ -194,22 +198,17 @@
             }
             // Insert
             byte[] data = content.getBytes();
-            ClientCHKBlock block;
+            
+            InsertBlock block = new InsertBlock(new ArrayBucket(data), null, 
FreenetURI.EMPTY_CHK_URI);
+
+            FreenetURI uri;
             try {
-                block = ClientCHKBlock.encode(data, false, false, (short)-1);
-            } catch (CHKEncodeException e) {
-                Logger.error(this, "Couldn't encode: "+e, e);
-                return;
+               uri = client.insert(block);
+            } catch (InserterException e) {
+               System.out.println("Error: "+e.getMessage());
+               return;
             }
-            ClientCHK chk = block.getClientKey();
-            FreenetURI uri = 
-                chk.getURI();
-            try {
-                               n.putCHK(block);
-                       } catch (LowLevelPutException e) {
-                               System.err.println("Error: "+e.getMessage());
-                       }
-            // Definitely interface
+            
             System.out.println("URI: "+uri);
         } else if(uline.startsWith("PUTFILE:")) {
             // Just insert to local store
@@ -221,34 +220,22 @@
             File f = new File(line);
             System.out.println("Attempting to read file "+line);
             try {
-                FileInputStream fis = new FileInputStream(line);
-                DataInputStream dis = new DataInputStream(fis);
-                int length = (int)f.length();
-                byte[] data = new byte[length];
-                dis.readFully(data);
-                dis.close();
-                System.out.println("Inserting...");
-                ClientCHKBlock block;
-                try {
-                    block = ClientCHKBlock.encode(data, false, false, 
(short)-1);
-                } catch (CHKEncodeException e) {
-                    System.out.println("Couldn't encode: "+e.getMessage());
-                    Logger.error(this, "Couldn't encode: "+e, e);
-                    return;
-                }
-                ClientCHK chk = block.getClientKey();
-                FreenetURI uri = 
-                    chk.getURI();
+               if(!f.exists() && f.canRead()) {
+                       throw new FileNotFoundException();
+               }
+               FileBucket fb = new FileBucket(f, true, false, false);
+               InsertBlock block = new InsertBlock(fb, null, 
FreenetURI.EMPTY_CHK_URI);
+               
+               FreenetURI uri = client.insert(block);
+               
+               // FIXME depends on CHK's still being renamable
                 uri = uri.setDocName(f.getName());
-                n.putCHK(block);
+               
                 System.out.println("URI: "+uri);
             } catch (FileNotFoundException e1) {
                 System.out.println("File not found");
-            } catch (IOException e) {
-                System.out.println("Could not read: "+e);
-                e.printStackTrace();
-                       } catch (LowLevelPutException e) {
-                               System.err.println("Error: "+e.getMessage());
+            } catch (InserterException e) {
+               System.out.println(e.getMessage());
             } catch (Throwable t) {
                 System.out.println("Threw: "+t);
                 t.printStackTrace();

Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2005-11-10 14:19:21 UTC (rev 
7514)
+++ trunk/freenet/src/freenet/node/Version.java 2005-11-10 14:48:26 UTC (rev 
7515)
@@ -20,10 +20,10 @@
        public static final String protocolVersion = "1.0";

        /** The build number of the current revision */
-       public static final int buildNumber = 150;
+       public static final int buildNumber = 151;

        /** Oldest build of Fred we will talk to */
-       public static final int lastGoodBuild = 150;
+       public static final int lastGoodBuild = 151;

        /** The highest reported build of fred */
        public static int highestSeenBuild = buildNumber;

Modified: 
trunk/freenet/src/freenet/support/PaddedEphemerallyEncryptedBucket.java
===================================================================
--- trunk/freenet/src/freenet/support/PaddedEphemerallyEncryptedBucket.java     
2005-11-10 14:19:21 UTC (rev 7514)
+++ trunk/freenet/src/freenet/support/PaddedEphemerallyEncryptedBucket.java     
2005-11-10 14:48:26 UTC (rev 7515)
@@ -184,14 +184,15 @@
         */
        public synchronized long paddedLength() {
                long size = dataLength;
-               if(dataLength < minPaddedSize) dataLength = minPaddedSize;
+               if(size < minPaddedSize) size = minPaddedSize;
                if(size == minPaddedSize) return size;
                long min = minPaddedSize;
                long max = minPaddedSize << 1;
                while(true) {
                        if(max < 0)
-                               throw new Error("Impossible size: "+dataLength);
+                               throw new Error("Impossible size: "+size+" - 
min="+min+", max="+max);
                        if(size > min && size < max) return max;
+                       min = max;
                        max = max << 1;
                }
        }


Reply via email to