1 /*
2 * Copyright 2012-2025 CodeLibs Project and the Others.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 * either express or implied. See the License for the specific language
14 * governing permissions and limitations under the License.
15 */
16 package org.codelibs.fess.util;
17
18 import java.util.function.Consumer;
19
20 import org.codelibs.fess.Constants;
21
22 /**
23 * A wrapper class that manages a system process for job execution.
24 * This class provides access to the underlying process and manages
25 * the input stream thread for capturing process output.
26 */
27 public class JobProcess {
28 /**
29 * The underlying system process.
30 */
31 protected Process process;
32
33 /**
34 * The thread that handles reading from the process input stream.
35 */
36 protected InputStreamThread inputStreamThread;
37
38 /**
39 * Constructs a new JobProcess with the specified process.
40 * Uses the default buffer size and no output callback.
41 *
42 * @param process the system process to wrap
43 */
44 public JobProcess(final Process process) {
45 this(process, InputStreamThread.MAX_BUFFER_SIZE, null);
46 }
47
48 /**
49 * Constructs a new JobProcess with the specified process, buffer size, and output callback.
50 *
51 * @param process the system process to wrap
52 * @param bufferSize the buffer size for reading process output
53 * @param outputCallback the callback function to handle process output lines
54 */
55 public JobProcess(final Process process, final int bufferSize, final Consumer<String> outputCallback) {
56 this.process = process;
57 inputStreamThread = new InputStreamThread(process.getInputStream(), Constants.CHARSET_UTF_8, bufferSize, outputCallback);
58 }
59
60 /**
61 * Returns the underlying system process.
62 *
63 * @return the wrapped process
64 */
65 public Process getProcess() {
66 return process;
67 }
68
69 /**
70 * Returns the input stream thread that handles process output.
71 *
72 * @return the input stream thread
73 */
74 public InputStreamThread getInputStreamThread() {
75 return inputStreamThread;
76 }
77
78 }