forked from I2P_Developers/i2p.i2p
75 lines
2.4 KiB
Java
75 lines
2.4 KiB
Java
package net.i2p.client.streaming;
|
|
|
|
import java.io.ByteArrayOutputStream;
|
|
import java.io.IOException;
|
|
|
|
import net.i2p.I2PAppContext;
|
|
import net.i2p.data.Base64;
|
|
import net.i2p.util.Log;
|
|
|
|
/**
|
|
*
|
|
*/
|
|
public class MessageOutputStreamTest {
|
|
private I2PAppContext _context;
|
|
private Log _log;
|
|
|
|
public MessageOutputStreamTest() {
|
|
_context = I2PAppContext.getGlobalContext();
|
|
_log = _context.logManager().getLog(MessageOutputStreamTest.class);
|
|
}
|
|
|
|
public void test() {
|
|
Receiver receiver = new Receiver();
|
|
MessageOutputStream out = new MessageOutputStream(_context, receiver);
|
|
byte buf[] = new byte[128*1024];
|
|
_context.random().nextBytes(buf);
|
|
try {
|
|
out.write(buf);
|
|
out.flush();
|
|
} catch (IOException ioe) { ioe.printStackTrace(); }
|
|
byte read[] = receiver.getData();
|
|
int firstOff = -1;
|
|
for (int k = 0; k < buf.length; k++) {
|
|
if (buf[k] != read[k]) {
|
|
firstOff = k;
|
|
break;
|
|
}
|
|
}
|
|
if (firstOff < 0) {
|
|
System.out.println("** Read match");
|
|
} else {
|
|
System.out.println("** Read does not match: first off = " + firstOff);
|
|
_log.error("read does not match (first off = " + firstOff + "): \n"
|
|
+ Base64.encode(buf) + "\n"
|
|
+ Base64.encode(read));
|
|
}
|
|
}
|
|
|
|
private class Receiver implements MessageOutputStream.DataReceiver {
|
|
private ByteArrayOutputStream _data;
|
|
public Receiver() {
|
|
_data = new ByteArrayOutputStream();
|
|
}
|
|
public MessageOutputStream.WriteStatus writeData(byte[] buf, int off, int size) {
|
|
_data.write(buf, off, size);
|
|
return new DummyWriteStatus();
|
|
}
|
|
public boolean writeInProcess() { return false; }
|
|
public byte[] getData() { return _data.toByteArray(); }
|
|
}
|
|
|
|
private static class DummyWriteStatus implements MessageOutputStream.WriteStatus {
|
|
public void waitForAccept(int maxWaitMs) { return; }
|
|
public void waitForCompletion(int maxWaitMs) { return; }
|
|
public boolean writeAccepted() { return true; }
|
|
public boolean writeFailed() { return false; }
|
|
public boolean writeSuccessful() { return true; }
|
|
}
|
|
|
|
public static void main(String args[]) {
|
|
MessageOutputStreamTest t = new MessageOutputStreamTest();
|
|
t.test();
|
|
}
|
|
}
|