# io.github.libtmux.transport.ProcessTransport.StdoutPump

- **Module:** io.github.libtmux.transport
- **Package:** io.github.libtmux:libtmux
- **Language:** Java
- **Kind:** class
- **Source:** https://github.com/libtmux/libtmux-java/blob/c067fced0dfd19bd6dd3d260e9d4c336becdb063/libtmux/src/main/java/io/github/libtmux/transport/ProcessTransport.java#L810
- **Page:** https://libtmux.org/en/java/latest/reference/io-github-libtmux-transport-processtransport-processtransport-stdoutpump/

```
io.github.libtmux.transport.ProcessTransport.StdoutPump(
  process: Process,
  limit: int,
  finished: CountDownLatch,
  failure: CompletableFuture<Throwable>,
  killedByClose: BooleanSupplier
)
```

Reads standard output without ever blocking on the pipe.

A read that blocks is a thread nothing can wake: tmux 3.0 and 3.1 daemons keep the client's
standard output open after the client has exited, and closing the stream does not end a read
already waiting in it. So this reads what is there and waits only while the process is alive.
Once it has exited, everything it wrote is already in the pipe, so the pump reads while bytes
are waiting and finishes at the first moment none are — a decision on the pipe's contents, not
on a clock, which cannot drop bytes however long the pump was starved of a CPU.

## Parameters

- `process` (`Process`)
- `limit` (`int`)
- `finished` (`CountDownLatch`)
- `failure` (`CompletableFuture<Throwable>`)
- `killedByClose` (`BooleanSupplier`)

## Members

### Other members

- [`call`](/en/java/latest/reference/io-github-libtmux-transport-processtransport-processtransport-stdoutpump-call/) (method)
- [`failure`](/en/java/latest/reference/io-github-libtmux-transport-processtransport-processtransport-stdoutpump-failure/) (method)
- [`finished`](/en/java/latest/reference/io-github-libtmux-transport-processtransport-processtransport-stdoutpump-finished/) (method)
- [`killedByClose`](/en/java/latest/reference/io-github-libtmux-transport-processtransport-processtransport-stdoutpump-killedbyclose/) (method)
- [`limit`](/en/java/latest/reference/io-github-libtmux-transport-processtransport-processtransport-stdoutpump-limit/) (method)
- [`process`](/en/java/latest/reference/io-github-libtmux-transport-processtransport-processtransport-stdoutpump-process/) (method)
