containerd/supervisor/task.go

35 lines
664 B
Go

package supervisor
import (
"sync"
"github.com/containerd/containerd/runtime"
)
// StartResponse is the response containing a started container
type StartResponse struct {
ExecPid int
Container runtime.Container
}
// Task executes an action returning an error chan with either nil or
// the error from executing the task
type Task interface {
// ErrorCh returns a channel used to report and error from an async task
ErrorCh() chan error
}
type baseTask struct {
errCh chan error
mu sync.Mutex
}
func (t *baseTask) ErrorCh() chan error {
t.mu.Lock()
defer t.mu.Unlock()
if t.errCh == nil {
t.errCh = make(chan error, 1)
}
return t.errCh
}