package edu.ucsb.jpregel.system;
import api.MasterOutputMaker;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import static java.lang.System.err;
import static java.lang.System.exit;
/**
*
* @author Charles Munger
*/
public class MasterOutputMakerStandard implements MasterOutputMaker
{
private static final int CHAR_BUFFER_SIZE = 8 * 1024;
@Override
public void write(FileSystem fileSystem, int numWorkers)
{
char[] charBuffer = new char[ CHAR_BUFFER_SIZE ];
BufferedReader bufferedReader = null;
BufferedWriter bufferedWriter = fileSystem.getFileOutputStream();
try {
for (int fileNum = 1; fileNum <= numWorkers; fileNum++)
{
try {
bufferedReader = fileSystem.getWorkerOutputFileInputStream(fileNum);
} catch(Exception e) {
System.out.println("Error getting input stream for file " +fileNum + " with message " + e.getLocalizedMessage());
}
int readBytes;
while((readBytes = bufferedReader.read( charBuffer )) != -1)
{
bufferedWriter.write( charBuffer, 0, readBytes );
}
bufferedReader.close();
}
bufferedWriter.close();
} catch (Exception exception) {
err.println("StandardMasterOutputMaker.write: Error: " + exception.getMessage());
exit(1);
}
}
}