forked from I2P_Developers/i2p.i2p
Util: New zero-copy BAOS
WIP, to be hooked in
This commit is contained in:
52
core/java/src/net/i2p/util/ByteArrayStream.java
Normal file
52
core/java/src/net/i2p/util/ByteArrayStream.java
Normal file
@ -0,0 +1,52 @@
|
||||
package net.i2p.util;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* OutputStream to InputStream adapter.
|
||||
* Zero-copy where possible. Unsynchronized.
|
||||
* This is NOT a Pipe.
|
||||
* Do NOT reset after writing.
|
||||
*
|
||||
* @since 0.9.48
|
||||
*/
|
||||
public class ByteArrayStream extends ByteArrayOutputStream {
|
||||
|
||||
public ByteArrayStream() {
|
||||
super();
|
||||
}
|
||||
|
||||
public ByteArrayStream(int size) {
|
||||
super(size);
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws IllegalStateException if previously written
|
||||
*/
|
||||
@Override
|
||||
public void reset() {
|
||||
if (count > 0)
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
|
||||
/**
|
||||
* Zero-copy only if the data fills the buffer.
|
||||
* Use asInputStream() for guaranteed zero-copy.
|
||||
*/
|
||||
@Override
|
||||
public byte[] toByteArray() {
|
||||
if (count == buf.length)
|
||||
return buf;
|
||||
return Arrays.copyOfRange(buf, 0, count);
|
||||
}
|
||||
|
||||
/**
|
||||
* All data previously written. Zero-copy. Not a Pipe.
|
||||
* Data written after this call will not appear.
|
||||
*/
|
||||
public ByteArrayInputStream asInputStream() {
|
||||
return new ByteArrayInputStream(buf, 0, count);
|
||||
}
|
||||
}
|
11
history.txt
11
history.txt
@ -1,4 +1,15 @@
|
||||
2020-11-02 zzz
|
||||
* I2CP: Remove tunnels immediately on client disconnect
|
||||
* i2psnark: Limit max size of embedded video
|
||||
* i2ptunnel: Restart tunnel if offline-signed private key file updated
|
||||
|
||||
2020-10-30 zzz
|
||||
* i2psnark: MetaInfo support for url-list (prep for BEP 19)
|
||||
* Util: Fix NPE in EepGet CLI callback via PartialEepGet
|
||||
|
||||
2020-10-29 zzz
|
||||
* Crypto: Precalculate Noise initial hashes
|
||||
* i2psnark: Store BEP 47 padding file info
|
||||
* Tunnels: Improved logging and handling of offline signature expiration
|
||||
|
||||
2020-10-28 zzz
|
||||
|
@ -18,7 +18,7 @@ public class RouterVersion {
|
||||
/** deprecated */
|
||||
public final static String ID = "Monotone";
|
||||
public final static String VERSION = CoreVersion.VERSION;
|
||||
public final static long BUILD = 11;
|
||||
public final static long BUILD = 12;
|
||||
|
||||
/** for example "-test" */
|
||||
public final static String EXTRA = "";
|
||||
|
Reference in New Issue
Block a user