daemon/attach.go
41cfaa73
 package daemon
 
 import (
 	"io"
 
e2acca67
 	"github.com/docker/docker/pkg/stdcopy"
41cfaa73
 )
 
e2acca67
 type ContainerAttachWithLogsConfig struct {
 	InStream                       io.ReadCloser
 	OutStream                      io.Writer
 	UseStdin, UseStdout, UseStderr bool
 	Logs, Stream                   bool
c2496d97
 }
 
88d32a61
 func (daemon *Daemon) ContainerAttachWithLogs(container *Container, c *ContainerAttachWithLogsConfig) error {
e2acca67
 	var errStream io.Writer
21e44d7a
 
b6a6c569
 	if !container.Config.Tty {
e2acca67
 		errStream = stdcopy.NewStdWriter(c.OutStream, stdcopy.Stderr)
 		c.OutStream = stdcopy.NewStdWriter(c.OutStream, stdcopy.Stdout)
 	} else {
 		errStream = c.OutStream
21e44d7a
 	}
 
e2acca67
 	var stdin io.ReadCloser
 	var stdout, stderr io.Writer
e6c93434
 
e2acca67
 	if c.UseStdin {
 		stdin = c.InStream
 	}
 	if c.UseStdout {
 		stdout = c.OutStream
 	}
 	if c.UseStderr {
 		stderr = errStream
21e44d7a
 	}
 
e2acca67
 	return container.AttachWithLogs(stdin, stdout, stderr, c.Logs, c.Stream)
 }
21e44d7a
 
e2acca67
 type ContainerWsAttachWithLogsConfig struct {
 	InStream             io.ReadCloser
 	OutStream, ErrStream io.Writer
 	Logs, Stream         bool
41cfaa73
 }
c30a55f1
 
88d32a61
 func (daemon *Daemon) ContainerWsAttachWithLogs(container *Container, c *ContainerWsAttachWithLogsConfig) error {
e2acca67
 	return container.AttachWithLogs(c.InStream, c.OutStream, c.ErrStream, c.Logs, c.Stream)
c30a55f1
 }