2015-05-05 16:25:05 -04:00
|
|
|
package daemon
|
|
|
|
|
2016-06-13 22:52:49 -04:00
|
|
|
import (
|
|
|
|
"time"
|
|
|
|
|
|
|
|
"golang.org/x/net/context"
|
|
|
|
)
|
2015-05-05 16:25:05 -04:00
|
|
|
|
2015-07-30 17:01:53 -04:00
|
|
|
// ContainerWait stops processing until the given container is
|
|
|
|
// stopped. If the container is not found, an error is returned. On a
|
|
|
|
// successful stop, the exit code of the container is returned. On a
|
|
|
|
// timeout, an error is returned. If you want to wait forever, supply
|
|
|
|
// a negative duration for the timeout.
|
2015-09-29 13:51:40 -04:00
|
|
|
func (daemon *Daemon) ContainerWait(name string, timeout time.Duration) (int, error) {
|
2015-12-11 12:39:28 -05:00
|
|
|
container, err := daemon.GetContainer(name)
|
2015-05-05 16:25:05 -04:00
|
|
|
if err != nil {
|
|
|
|
return -1, err
|
|
|
|
}
|
|
|
|
|
|
|
|
return container.WaitStop(timeout)
|
|
|
|
}
|
2016-06-13 22:52:49 -04:00
|
|
|
|
|
|
|
// ContainerWaitWithContext returns a channel where exit code is sent
|
|
|
|
// when container stops. Channel can be cancelled with a context.
|
2016-06-14 14:11:43 -04:00
|
|
|
func (daemon *Daemon) ContainerWaitWithContext(ctx context.Context, name string) error {
|
2016-06-13 22:52:49 -04:00
|
|
|
container, err := daemon.GetContainer(name)
|
|
|
|
if err != nil {
|
2016-06-14 14:11:43 -04:00
|
|
|
return err
|
2016-06-13 22:52:49 -04:00
|
|
|
}
|
|
|
|
|
2016-06-14 14:11:43 -04:00
|
|
|
return container.WaitWithContext(ctx)
|
2016-06-13 22:52:49 -04:00
|
|
|
}
|