| /* |
| * Copyright (C) 2020, Michael Dardis. and others |
| * |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Distribution License v. 1.0 which is available at |
| * https://www.eclipse.org/org/documents/edl-v10.php. |
| * |
| * SPDX-License-Identifier: BSD-3-Clause |
| */ |
| |
| package org.eclipse.jgit.util.io; |
| |
| import java.io.IOException; |
| import java.io.OutputStream; |
| |
| /** |
| * An output stream that writes all data to two streams. |
| * |
| * @since 5.7 |
| */ |
| public class TeeOutputStream extends OutputStream { |
| |
| private final OutputStream stream1; |
| private final OutputStream stream2; |
| |
| /** |
| * Initialize a tee output stream. |
| * |
| * @param stream1 first output stream |
| * @param stream2 second output stream |
| */ |
| public TeeOutputStream(OutputStream stream1, OutputStream stream2) { |
| this.stream1 = stream1; |
| this.stream2 = stream2; |
| } |
| |
| @Override |
| public void write(byte[] buf) throws IOException { |
| this.stream1.write(buf); |
| this.stream2.write(buf); |
| } |
| |
| @Override |
| public void write(byte[] buf, int off, int len) throws IOException { |
| this.stream1.write(buf, off, len); |
| this.stream2.write(buf, off, len); |
| } |
| |
| @Override |
| public void write(int b) throws IOException { |
| this.stream1.write(b); |
| this.stream2.write(b); |
| } |
| |
| @Override |
| public void flush() throws IOException { |
| this.stream1.flush(); |
| this.stream2.flush(); |
| } |
| |
| @Override |
| public void close() throws IOException { |
| try { |
| this.stream1.close(); |
| } finally { |
| this.stream2.close(); |
| } |
| } |
| } |