github.com/torfuzx/docker@v1.8.1/daemon/attach.go (about) 1 package daemon 2 3 import ( 4 "io" 5 6 "github.com/docker/docker/pkg/stdcopy" 7 ) 8 9 type ContainerAttachWithLogsConfig struct { 10 InStream io.ReadCloser 11 OutStream io.Writer 12 UseStdin, UseStdout, UseStderr bool 13 Logs, Stream bool 14 } 15 16 func (daemon *Daemon) ContainerAttachWithLogs(container *Container, c *ContainerAttachWithLogsConfig) error { 17 var errStream io.Writer 18 19 if !container.Config.Tty { 20 errStream = stdcopy.NewStdWriter(c.OutStream, stdcopy.Stderr) 21 c.OutStream = stdcopy.NewStdWriter(c.OutStream, stdcopy.Stdout) 22 } else { 23 errStream = c.OutStream 24 } 25 26 var stdin io.ReadCloser 27 var stdout, stderr io.Writer 28 29 if c.UseStdin { 30 stdin = c.InStream 31 } 32 if c.UseStdout { 33 stdout = c.OutStream 34 } 35 if c.UseStderr { 36 stderr = errStream 37 } 38 39 return container.AttachWithLogs(stdin, stdout, stderr, c.Logs, c.Stream) 40 } 41 42 type ContainerWsAttachWithLogsConfig struct { 43 InStream io.ReadCloser 44 OutStream, ErrStream io.Writer 45 Logs, Stream bool 46 } 47 48 func (daemon *Daemon) ContainerWsAttachWithLogs(container *Container, c *ContainerWsAttachWithLogsConfig) error { 49 return container.AttachWithLogs(c.InStream, c.OutStream, c.ErrStream, c.Logs, c.Stream) 50 }