Add containers streaming API

Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
This commit is contained in:
Michael Crosby
2018-05-17 14:52:39 -04:00
parent 26e2dd6754
commit 400f16fc46
6 changed files with 407 additions and 54 deletions

View File

@@ -18,6 +18,7 @@ package containers
import (
"context"
"io"
api "github.com/containerd/containerd/api/services/containers/v1"
"github.com/containerd/containerd/plugin"
@@ -71,6 +72,31 @@ func (s *service) List(ctx context.Context, req *api.ListContainersRequest) (*ap
return s.local.List(ctx, req)
}
func (s *service) ListStream(req *api.ListContainersRequest, stream api.Containers_ListStreamServer) error {
containers, err := s.local.ListStream(stream.Context(), req)
if err != nil {
return err
}
for {
select {
case <-stream.Context().Done():
return nil
default:
c, err := containers.Recv()
if err != nil {
if err == io.EOF {
return nil
}
return err
}
if err := stream.Send(c); err != nil {
return err
}
}
}
return nil
}
func (s *service) Create(ctx context.Context, req *api.CreateContainerRequest) (*api.CreateContainerResponse, error) {
return s.local.Create(ctx, req)
}