Move fifo creation to client

Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
This commit is contained in:
Michael Crosby 2016-02-03 13:56:15 -08:00
parent f5fdc548e8
commit 36eb83cb99
14 changed files with 305 additions and 313 deletions

View file

@ -1,6 +1,10 @@
package supervisor
import "time"
import (
"time"
"github.com/docker/containerd/runtime"
)
type AddProcessEvent struct {
s *Supervisor
@ -14,7 +18,11 @@ func (h *AddProcessEvent) Handle(e *Event) error {
if !ok {
return ErrContainerNotFound
}
process, err := ci.container.Exec(e.Pid, *e.ProcessSpec)
process, err := ci.container.Exec(e.Pid, *e.ProcessSpec, runtime.Stdio{
Stdin: e.Stdin,
Stdout: e.Stdout,
Stderr: e.Stderr,
})
if err != nil {
return err
}
@ -22,10 +30,6 @@ func (h *AddProcessEvent) Handle(e *Event) error {
return err
}
ExecProcessTimer.UpdateSince(start)
e.StartResponse <- StartResponse{
Stdin: process.Stdin(),
Stdout: process.Stdout(),
Stderr: process.Stderr(),
}
e.StartResponse <- StartResponse{}
return nil
}

View file

@ -24,6 +24,9 @@ func (h *StartEvent) Handle(e *Event) error {
Err: e.Err,
Container: container,
StartResponse: e.StartResponse,
Stdin: e.Stdin,
Stdout: e.Stdout,
Stderr: e.Stderr,
}
if e.Checkpoint != nil {
task.Checkpoint = e.Checkpoint.Name

View file

@ -37,9 +37,6 @@ func NewEvent(t EventType) *Event {
}
type StartResponse struct {
Stdin string
Stdout string
Stderr string
}
type Event struct {

View file

@ -38,7 +38,11 @@ func (w *worker) Start() {
defer w.wg.Done()
for t := range w.s.tasks {
started := time.Now()
process, err := t.Container.Start(t.Checkpoint)
process, err := t.Container.Start(t.Checkpoint, runtime.Stdio{
Stdin: t.Stdin,
Stdout: t.Stdout,
Stderr: t.Stderr,
})
if err != nil {
evt := NewEvent(DeleteEventType)
evt.ID = t.Container.ID()
@ -61,10 +65,6 @@ func (w *worker) Start() {
}
ContainerStartTimer.UpdateSince(started)
t.Err <- nil
t.StartResponse <- StartResponse{
Stdin: process.Stdin(),
Stdout: process.Stdout(),
Stderr: process.Stderr(),
}
t.StartResponse <- StartResponse{}
}
}