Search in sources :

Example 1 with PIDProcessOperator

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

the class SoftExecutor method execute.

/**
 * @return Executed time in milliseconds
 * @throws IOException
 */
public SoftExecutor.Executed execute() throws IOException {
    return execute((fmvExecutor, commandLine, execListener, readLineList) -> {
        final String cmdLineStr = CommandLineUtils.toLine(commandLine);
        long startTime = System.currentTimeMillis();
        long time = 0;
        int exitValue = 0;
        PIDProcessOperator pidProcessOperator = new PIDProcessOperator();
        fmvExecutor.addProcessOperator(pidProcessOperator);
        try {
            execListener.eventExecuting(cmdLineStr);
            exitValue = geExecuteDelegate().execute(fmvExecutor, commandLine);
            time = System.currentTimeMillis() - startTime;
            execListener.eventExecuted(cmdLineStr, exitValue, time);
        } catch (ExecuteException e) {
            FMVExecuteException fmvExecuteException = new FMVExecuteException(softProvider.getExceptionKnownAnalyzerClass(), e, cmdLineStr, readLineList);
            execListener.eventException(fmvExecuteException);
            ExceptionKnownAnalyzers.doOrThrows(softProvider.getExceptionKnownAnalyzerClass(), fmvExecuteException, exceptionKnowConsumer, exceptionConsumer);
        }
        return new Executed(pidProcessOperator.getPID(), exitValue, time);
    });
}
Also used : PIDProcessOperator(org.fagu.fmv.soft.exec.PIDProcessOperator) FMVExecuteException(org.fagu.fmv.soft.exec.exception.FMVExecuteException) ExecuteException(org.apache.commons.exec.ExecuteException) FMVExecuteException(org.fagu.fmv.soft.exec.exception.FMVExecuteException)

Example 2 with PIDProcessOperator

use of org.fagu.fmv.soft.exec.PIDProcessOperator 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

ExecuteException (org.apache.commons.exec.ExecuteException)2 PIDProcessOperator (org.fagu.fmv.soft.exec.PIDProcessOperator)2 FMVExecuteException (org.fagu.fmv.soft.exec.exception.FMVExecuteException)2 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 BufferedReadLine (org.fagu.fmv.soft.exec.BufferedReadLine)1 CommandLineUtils (org.fagu.fmv.soft.exec.CommandLineUtils)1