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;
}
}