Selaa lähdekoodia

#2450 add outputCallback

Shinsuke Sugaya 5 vuotta sitten
vanhempi
commit
870c32cbee
1 muutettua tiedostoa jossa 9 lisäystä ja 2 poistoa
  1. 9 2
      src/main/java/org/codelibs/fess/util/InputStreamThread.java

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

@@ -21,6 +21,7 @@ import java.io.InputStreamReader;
 import java.io.UnsupportedEncodingException;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.function.Consumer;
 
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
@@ -37,13 +38,16 @@ public class InputStreamThread extends Thread {
 
     private final int bufferSize;
 
+    private final Consumer<String> outputCallback;
+
     public InputStreamThread(final InputStream is, final String charset) {
-        this(is, charset, MAX_BUFFER_SIZE);
+        this(is, charset, MAX_BUFFER_SIZE, null);
     }
 
-    public InputStreamThread(final InputStream is, final String charset, final int bufferSize) {
+    public InputStreamThread(final InputStream is, final String charset, final int bufferSize, final Consumer<String> outputCallback) {
         super("InputStreamThread");
         this.bufferSize = bufferSize;
+        this.outputCallback = outputCallback;
 
         try {
             br = new BufferedReader(new InputStreamReader(is, charset));
@@ -65,6 +69,9 @@ public class InputStreamThread extends Thread {
                         logger.debug(line);
                     }
                     list.add(line);
+                    if (outputCallback != null) {
+                        outputCallback.accept(line);
+                    }
                     if (list.size() > bufferSize) {
                         list.remove(0);
                     }