Search in sources :

Example 1 with ExceptionConsumer

use of org.fagu.fmv.soft.exec.exception.ExceptionConsumer in project fmv by f-agu.

the class SoftExecutor method executeInBackground.

/**
 * @param executorService
 * @return
 * @throws IOException
 */
public Future<SoftExecutor.Executed> executeInBackground(ExecutorService executorService) throws IOException {
    return execute((fmvExecutor, commandLine, execListener, readLineList) -> {
        final String cmdLineStr = CommandLineUtils.toLine(commandLine);
        final AtomicLong startTime = new AtomicLong();
        final AtomicLong time = new AtomicLong();
        final PIDProcessOperator pidProcessOperator = new PIDProcessOperator();
        fmvExecutor.addProcessOperator(pidProcessOperator);
        return new WrapFuture<>(fmvExecutor.executeAsynchronous(geExecuteDelegate(), commandLine, executorService, // before
        () -> {
            startTime.set(System.currentTimeMillis());
            execListener.eventExecuting(cmdLineStr);
        }, // after
        exitValue -> {
            time.set(System.currentTimeMillis() - startTime.get());
            execListener.eventExecuted(cmdLineStr, exitValue, time.get());
        }, // exception
        exception -> {
            if (exception instanceof ExecuteException) {
                ExecuteException e = (ExecuteException) exception;
                FMVExecuteException fmvExecuteException = new FMVExecuteException(softProvider.getExceptionKnownAnalyzerClass(), e, cmdLineStr, readLineList);
                execListener.eventException(fmvExecuteException);
                ExceptionKnownAnalyzers.doOrThrows(softProvider.getExceptionKnownAnalyzerClass(), fmvExecuteException, exceptionKnowConsumer, exceptionConsumer);
            }
        }), exitValue -> new Executed(pidProcessOperator.getPID(), exitValue, time.get()));
    });
}
Also used : PIDProcessOperator(org.fagu.fmv.soft.exec.PIDProcessOperator) FMVCommandLine(org.fagu.fmv.soft.exec.FMVCommandLine) HashMap(java.util.HashMap) CommandLine(org.apache.commons.exec.CommandLine) PIDProcessOperator(org.fagu.fmv.soft.exec.PIDProcessOperator) ArrayList(java.util.ArrayList) SoftProvider(org.fagu.fmv.soft.find.SoftProvider) OptionalLong(java.util.OptionalLong) Future(java.util.concurrent.Future) ExceptionKnownConsumer(org.fagu.fmv.soft.exec.exception.ExceptionKnownConsumer) WrapFuture(org.fagu.fmv.soft.exec.WrapFuture) ExceptionConsumer(org.fagu.fmv.soft.exec.exception.ExceptionConsumer) Duration(java.time.Duration) Map(java.util.Map) LookReader(org.fagu.fmv.soft.exec.LookReader) ExecuteException(org.apache.commons.exec.ExecuteException) ExecutorService(java.util.concurrent.ExecutorService) CommandLineUtils(org.fagu.fmv.soft.exec.CommandLineUtils) FMVExecutor(org.fagu.fmv.soft.exec.FMVExecutor) ReadLine(org.fagu.fmv.soft.exec.ReadLine) ExceptionKnownAnalyzers(org.fagu.fmv.soft.exec.exception.ExceptionKnownAnalyzers) IOException(java.io.IOException) FMVExecuteException(org.fagu.fmv.soft.exec.exception.FMVExecuteException) ExecHelper(org.fagu.fmv.soft.exec.ExecHelper) File(java.io.File) Objects(java.util.Objects) Consumer(java.util.function.Consumer) AtomicLong(java.util.concurrent.atomic.AtomicLong) List(java.util.List) BufferedReadLine(org.fagu.fmv.soft.exec.BufferedReadLine) Proxifier(org.fagu.fmv.soft.utils.Proxifier) Collections(java.util.Collections) AtomicLong(java.util.concurrent.atomic.AtomicLong) FMVExecuteException(org.fagu.fmv.soft.exec.exception.FMVExecuteException) WrapFuture(org.fagu.fmv.soft.exec.WrapFuture) ExecuteException(org.apache.commons.exec.ExecuteException) FMVExecuteException(org.fagu.fmv.soft.exec.exception.FMVExecuteException)

Aggregations

File (java.io.File)1 IOException (java.io.IOException)1 Duration (java.time.Duration)1 ArrayList (java.util.ArrayList)1 Collections (java.util.Collections)1 HashMap (java.util.HashMap)1 List (java.util.List)1 Map (java.util.Map)1 Objects (java.util.Objects)1 OptionalLong (java.util.OptionalLong)1 ExecutorService (java.util.concurrent.ExecutorService)1 Future (java.util.concurrent.Future)1 AtomicLong (java.util.concurrent.atomic.AtomicLong)1 Consumer (java.util.function.Consumer)1 CommandLine (org.apache.commons.exec.CommandLine)1 ExecuteException (org.apache.commons.exec.ExecuteException)1 BufferedReadLine (org.fagu.fmv.soft.exec.BufferedReadLine)1 CommandLineUtils (org.fagu.fmv.soft.exec.CommandLineUtils)1 ExecHelper (org.fagu.fmv.soft.exec.ExecHelper)1 FMVCommandLine (org.fagu.fmv.soft.exec.FMVCommandLine)1