소스 검색

#2450 add outputCallback

Shinsuke Sugaya 5 년 전
부모
커밋
870c32cbee
1개의 변경된 파일9개의 추가작업 그리고 2개의 파일을 삭제
  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.io.UnsupportedEncodingException;
 import java.util.LinkedList;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.List;
+import java.util.function.Consumer;
 
 
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.Logger;
@@ -37,13 +38,16 @@ public class InputStreamThread extends Thread {
 
 
     private final int bufferSize;
     private final int bufferSize;
 
 
+    private final Consumer<String> outputCallback;
+
     public InputStreamThread(final InputStream is, final String charset) {
     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");
         super("InputStreamThread");
         this.bufferSize = bufferSize;
         this.bufferSize = bufferSize;
+        this.outputCallback = outputCallback;
 
 
         try {
         try {
             br = new BufferedReader(new InputStreamReader(is, charset));
             br = new BufferedReader(new InputStreamReader(is, charset));
@@ -65,6 +69,9 @@ public class InputStreamThread extends Thread {
                         logger.debug(line);
                         logger.debug(line);
                     }
                     }
                     list.add(line);
                     list.add(line);
+                    if (outputCallback != null) {
+                        outputCallback.accept(line);
+                    }
                     if (list.size() > bufferSize) {
                     if (list.size() > bufferSize) {
                         list.remove(0);
                         list.remove(0);
                     }
                     }