Author: nextgens
Date: 2008-08-17 11:37:00 +0000 (Sun, 17 Aug 2008)
New Revision: 21954
Modified:
trunk/freenet/src/freenet/support/io/ArrayBucket.java
Log:
ArrayBucket: report when maxLenght is < 0
(If we want to control the ram usage we need to know exactly how much memory we
can allocate)
Modified: trunk/freenet/src/freenet/support/io/ArrayBucket.java
===================================================================
--- trunk/freenet/src/freenet/support/io/ArrayBucket.java 2008-08-17
11:35:49 UTC (rev 21953)
+++ trunk/freenet/src/freenet/support/io/ArrayBucket.java 2008-08-17
11:37:00 UTC (rev 21954)
@@ -1,5 +1,6 @@
package freenet.support.io;
+import freenet.support.Logger;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@@ -23,6 +24,8 @@
private final long maxSize;
private long size;
+ private static boolean logDEBUG = Logger.shouldLog(Logger.DEBUG,
ArrayBucket.class);
+
public ArrayBucket(long maxSize) {
this("ArrayBucket", maxSize);
}
@@ -33,7 +36,7 @@
}
public ArrayBucket(byte[] initdata, long maxSize) {
- this("ArrayBucket", -1);
+ this("ArrayBucket", maxSize);
data.add(initdata);
}
@@ -41,6 +44,8 @@
data = new ArrayList<byte[]>();
this.name = name;
this.maxSize = maxSize;
+ if(logDEBUG && maxSize < 0)
+ Logger.minor(this, "Has been called with maxSize<0 !",
new NullPointerException());
}
public synchronized OutputStream getOutputStream() throws IOException {
@@ -91,7 +96,7 @@
public synchronized void write(byte b[], int off, int len) {
if(readOnly) throw new IllegalStateException("Read
only");
long sizeIfWritten = size + len;
- if(maxSize > -1 && maxSize < sizeIfWritten)
+ if(maxSize > -1 && maxSize < sizeIfWritten) // FIXME:
should be IOE but how to do it?
throw new IllegalArgumentException("The maxSize
of the bucket is "+maxSize+
" and writing "+len+ " bytes to it
would make it oversize!");
super.write(b, off, len);
@@ -102,7 +107,7 @@
public synchronized void write(int b) {
if(readOnly) throw new IllegalStateException("Read
only");
long sizeIfWritten = size + 1;
- if(maxSize > -1 && maxSize < sizeIfWritten)
+ if(maxSize > -1 && maxSize < sizeIfWritten) // FIXME:
should be IOE but how to do it?
throw new IllegalArgumentException("The maxSize
of the bucket is "+maxSize+
" and writing 1 byte to it would make
it oversize!");
super.write(b);