Package org.mandas.docker.client
Interface LogStream
-
- All Superinterfaces:
AutoCloseable
,Closeable
,Iterator<LogMessage>
public interface LogStream extends Iterator<LogMessage>, Closeable
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description void
attach(OutputStream stdout, OutputStream stderr)
Attaches twoOutputStream
s to theLogStream
.String
readFully()
-
Methods inherited from interface java.util.Iterator
forEachRemaining, hasNext, next, remove
-
-
-
-
Method Detail
-
readFully
String readFully()
-
attach
void attach(OutputStream stdout, OutputStream stderr) throws IOException
Attaches twoOutputStream
s to theLogStream
.Example usage:
dockerClient .attachContainer(containerId, AttachParameter.LOGS, AttachParameter.STDOUT, AttachParameter.STDERR, AttachParameter.STREAM) .attach(System.out, System.err);
Typically you use
PipedOutputStream
connected to aPipedInputStream
which are read by - for example - anInputStreamReader
or aScanner
. For small inputs, thePipedOutputStream
just writes to the buffer of thePipedInputStream
, but you actually want to read and write from separate threads, as it may deadlock the thread.final PipedInputStream stdout = new PipedInputStream(); final PipedInputStream stderr = new PipedInputStream(); final PipedOutputStream stdout_pipe = new PipedOutputStream(stdout); final PipedOutputStream stderr_pipe = new PipedOutputStream(stderr); executor.submit(new Callable<Void>() { @Override public Void call() throws Exception { dockerClient.attachContainer(containerId, AttachParameter.LOGS, AttachParameter.STDOUT, AttachParameter.STDERR, AttachParameter.STREAM .attach(stdout_pipe, stderr_pipe); return null; } }); try (Scanner sc_stdout = new Scanner(stdout); Scanner sc_stderr = new Scanner(stderr)) { // ... read here }
- Parameters:
stdout
- OutputStream for the standard outstderr
- OutputStream for the standard err- Throws:
IOException
- if an I/O error occurs- See Also:
PipedInputStream
,PipedOutputStream
-
-