Parcourir la source

#2450 add outputCallbac

Shinsuke Sugaya il y a 5 ans
Parent
commit
059f8080cd

+ 7 - 2
src/main/java/org/codelibs/fess/helper/ProcessHelper.java

@@ -57,13 +57,18 @@ public class ProcessHelper {
         }
         }
     }
     }
 
 
-    public synchronized JobProcess startProcess(final String sessionId, final List<String> cmdList, final Consumer<ProcessBuilder> pbCall) {
+    public JobProcess startProcess(final String sessionId, final List<String> cmdList, final Consumer<ProcessBuilder> pbCall) {
+        return startProcess(sessionId, cmdList, pbCall, InputStreamThread.MAX_BUFFER_SIZE, null);
+    }
+
+    public synchronized JobProcess startProcess(final String sessionId, final List<String> cmdList, final Consumer<ProcessBuilder> pbCall,
+            final int bufferSize, final Consumer<String> outputCallback) {
         final ProcessBuilder pb = new ProcessBuilder(cmdList);
         final ProcessBuilder pb = new ProcessBuilder(cmdList);
         pbCall.accept(pb);
         pbCall.accept(pb);
         destroyProcess(sessionId);
         destroyProcess(sessionId);
         JobProcess jobProcess;
         JobProcess jobProcess;
         try {
         try {
-            jobProcess = new JobProcess(pb.start());
+            jobProcess = new JobProcess(pb.start(), bufferSize, outputCallback);
             destroyProcess(sessionId, runningProcessMap.putIfAbsent(sessionId, jobProcess));
             destroyProcess(sessionId, runningProcessMap.putIfAbsent(sessionId, jobProcess));
             return jobProcess;
             return jobProcess;
         } catch (final IOException e) {
         } catch (final IOException e) {

+ 1 - 1
src/main/java/org/codelibs/fess/util/InputStreamThread.java

@@ -32,7 +32,7 @@ public class InputStreamThread extends Thread {
 
 
     private BufferedReader br;
     private BufferedReader br;
 
 
-    private static final int MAX_BUFFER_SIZE = 1000;
+    public static final int MAX_BUFFER_SIZE = 1000;
 
 
     private final List<String> list = new LinkedList<>();
     private final List<String> list = new LinkedList<>();
 
 

+ 7 - 1
src/main/java/org/codelibs/fess/util/JobProcess.java

@@ -15,6 +15,8 @@
  */
  */
 package org.codelibs.fess.util;
 package org.codelibs.fess.util;
 
 
+import java.util.function.Consumer;
+
 import org.codelibs.fess.Constants;
 import org.codelibs.fess.Constants;
 
 
 public class JobProcess {
 public class JobProcess {
@@ -23,8 +25,12 @@ public class JobProcess {
     protected InputStreamThread inputStreamThread;
     protected InputStreamThread inputStreamThread;
 
 
     public JobProcess(final Process process) {
     public JobProcess(final Process process) {
+        this(process, InputStreamThread.MAX_BUFFER_SIZE, null);
+    }
+
+    public JobProcess(final Process process, final int bufferSize, final Consumer<String> outputCallback) {
         this.process = process;
         this.process = process;
-        inputStreamThread = new InputStreamThread(process.getInputStream(), Constants.UTF_8);
+        inputStreamThread = new InputStreamThread(process.getInputStream(), Constants.UTF_8, bufferSize, outputCallback);
     }
     }
 
 
     public Process getProcess() {
     public Process getProcess() {