Package org.aksw.commons.io.process.util
Class SimpleProcessExecutor
- java.lang.Object
-
- org.aksw.commons.io.process.util.SimpleProcessExecutor
-
public class SimpleProcessExecutor extends Object
-
-
Field Summary
Fields Modifier and Type Field Description protected booleanisServiceprotected java.util.function.Consumer<String>outputSinkprotected ProcessBuilderprocessBuilderprotected java.util.function.UnaryOperator<java.util.function.Consumer<String>>similarityRemover
-
Constructor Summary
Constructors Constructor Description SimpleProcessExecutor(ProcessBuilder processBuilder)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description Processexecute()Map.Entry<io.reactivex.rxjava3.core.Single<Integer>,Process>executeCore()io.reactivex.rxjava3.core.Single<Integer>executeFuture()voidexecuteReadLines(io.reactivex.rxjava3.core.Flowable<String> upstream, io.reactivex.rxjava3.core.FlowableEmitter<String> emitter)java.util.function.Consumer<String>getOutputSink()ProcessBuildergetProcessBuilder()Return the underlying processBuilderjava.util.function.UnaryOperator<java.util.function.Consumer<String>>getSimilarityRemover()booleanisService()voidrun(Process p, io.reactivex.rxjava3.core.FlowableEmitter<Integer> emitter)Wraps process execution as a single that will hold the exit code.SimpleProcessExecutorsetOutputSink(java.util.function.Consumer<String> outputSink)SimpleProcessExecutorsetService(boolean isService)If the process is a service, its output will be processed by a separate thread.SimpleProcessExecutorsetSimilarityRemover(java.util.function.UnaryOperator<java.util.function.Consumer<String>> similarityRemover)intwatchProcessOutput(Process p)Utility function that blocks until the process the ends, thereby forwarding output to the configured sink and applying filtering of consecutive lines that are too similarstatic SimpleProcessExecutorwrap(ProcessBuilder processBuilder)
-
-
-
Field Detail
-
processBuilder
protected ProcessBuilder processBuilder
-
outputSink
protected java.util.function.Consumer<String> outputSink
-
similarityRemover
protected java.util.function.UnaryOperator<java.util.function.Consumer<String>> similarityRemover
-
isService
protected boolean isService
-
-
Constructor Detail
-
SimpleProcessExecutor
public SimpleProcessExecutor(ProcessBuilder processBuilder)
-
-
Method Detail
-
getOutputSink
public java.util.function.Consumer<String> getOutputSink()
-
setOutputSink
public SimpleProcessExecutor setOutputSink(java.util.function.Consumer<String> outputSink)
-
getSimilarityRemover
public java.util.function.UnaryOperator<java.util.function.Consumer<String>> getSimilarityRemover()
-
setSimilarityRemover
public SimpleProcessExecutor setSimilarityRemover(java.util.function.UnaryOperator<java.util.function.Consumer<String>> similarityRemover)
-
isService
public boolean isService()
-
getProcessBuilder
public ProcessBuilder getProcessBuilder()
Return the underlying processBuilder- Returns:
-
setService
public SimpleProcessExecutor setService(boolean isService)
If the process is a service, its output will be processed by a separate thread. Otherwise, all output will be consumed by the invoking thread.- Returns:
-
watchProcessOutput
public int watchProcessOutput(Process p) throws IOException, InterruptedException
Utility function that blocks until the process the ends, thereby forwarding output to the configured sink and applying filtering of consecutive lines that are too similar- Parameters:
p-- Returns:
- Throws:
IOExceptionInterruptedException
-
run
public void run(Process p, io.reactivex.rxjava3.core.FlowableEmitter<Integer> emitter)
Wraps process execution as a single that will hold the exit code. This which allows for waiting for the process to end as well as canceling it using e.g. timeout- Parameters:
p-emitter-
-
execute
public Process execute() throws IOException, InterruptedException
- Throws:
IOExceptionInterruptedException
-
executeReadLines
public void executeReadLines(io.reactivex.rxjava3.core.Flowable<String> upstream, io.reactivex.rxjava3.core.FlowableEmitter<String> emitter) throws IOException
- Throws:
IOException
-
executeFuture
public io.reactivex.rxjava3.core.Single<Integer> executeFuture() throws IOException, InterruptedException
- Throws:
IOExceptionInterruptedException
-
executeCore
public Map.Entry<io.reactivex.rxjava3.core.Single<Integer>,Process> executeCore() throws IOException, InterruptedException
- Throws:
IOExceptionInterruptedException
-
wrap
public static SimpleProcessExecutor wrap(ProcessBuilder processBuilder)
-
-