package edu.washington.cs.oneswarm.ui.gwt.server.ffmpeg;
public class FFMpegException extends Exception {
public static enum ErrorType {
FFMPEG_BIN_ERROR, FORMAT_ERROR_DOWNLOADING, FORMAT_ERROR, FILE_NOT_FOUND, INTERUPT, OTHER
};
private static final long serialVersionUID = -444771194088684321L;
private int exitCode = -1;
private String stdErr = "";
private long dataWritten = 0;
private final ErrorType type;
public int getExitCode() {
return exitCode;
}
public void setExitCode(int exitCode) {
this.exitCode = exitCode;
}
public long getDataWritten() {
return dataWritten;
}
public void setDataWritten(long dataWritten) {
this.dataWritten = dataWritten;
}
public FFMpegException(ErrorType type, String message) {
super(message);
this.type = type;
}
public FFMpegException(ErrorType type, String message, Throwable cause) {
super(message, cause);
this.type = type;
}
public FFMpegException(ErrorType type, int exitCode, String stderr) {
super("FFmpeg exited with exit code " + exitCode);
this.exitCode = exitCode;
this.type = type;
this.stdErr = stderr;
}
public void setStdErr(String stdErr) {
this.stdErr = stdErr;
}
public String getStdErr() {
return stdErr;
}
public void setFFMpegExecArray(String[] parameters) {
ffmpegParameters = parameters;
}
private String[] ffmpegParameters;
public String toString() {
StringBuilder b = new StringBuilder();
b.append("got ffmpeg exception: " + this.getMessage() + "\n");
b.append("type=" + this.type.name() + "\n");
b.append("exit code=" + this.getExitCode() + "\n");
b.append("written=" + this.getDataWritten() + "\n");
if (ffmpegParameters != null) {
for (String p : ffmpegParameters) {
b.append(p + " ");
}
b.append("\n");
}
b.append("=========ffmpeg stderr===========\n");
b.append(this.getStdErr() + "\n");
b.append("=================================\n");
return b.toString();
}
}