Commit 14af0930 authored by Alex Wenckus's avatar Alex Wenckus Committed by alex

Refactor.

git-svn-id: http://svn.igniterealtime.org/svn/repos/wildfire/trunk@5932 b35dd754-fafc-0310-a699-88a17e54d16e
parent 2f558943
/**
* $RCSfile: $
* $Revision: $
* $Date: $
*
* Copyright (C) 2006 Jive Software. All rights reserved.
* This software is the proprietary information of Jive Software. Use is subject to license terms.
*/
package org.jivesoftware.util;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.concurrent.Callable;
/**
* Callable which will read from an input stream and write to an output stream.
*
* @author Alexander Wenckus
*/
public class InputOutputStreamWrapper implements Callable {
private static final int DEFAULT_BUFFER_SIZE = 8000;
private long amountWritten = 0;
private int bufferSize;
private InputStream in;
private OutputStream out;
public InputOutputStreamWrapper(InputStream in, OutputStream out, int bufferSize) {
if(bufferSize <= 0) {
bufferSize = DEFAULT_BUFFER_SIZE;
}
this.bufferSize = bufferSize;
this.in = in;
this.out = out;
}
public InputOutputStreamWrapper(InputStream in, OutputStream out) {
this(in, out, DEFAULT_BUFFER_SIZE);
}
public Object call() throws Exception {
final byte[] b = new byte[bufferSize];
int count = 0;
amountWritten = 0;
do {
// write to the output stream
out.write(b, 0, count);
amountWritten += count;
// read more bytes from the input stream
count = in.read(b);
} while (count >= 0);
return amountWritten;
}
public long getAmountWritten() {
return amountWritten;
}
}
......@@ -44,6 +44,9 @@ public interface ProxyTransfer extends Cacheable, FileTransferProgress {
/**
* Transfers the file from the initiator to the target.
*
* @throws java.io.IOException when an error occurs either reading from the input stream or
* writing to the output stream.
*/
public void doTransfer() throws IOException;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment