github.com/hinshun/containerd@v0.2.7/supervisor/stats.go (about)

     1  package supervisor
     2  
     3  import (
     4  	"time"
     5  
     6  	"github.com/docker/containerd/runtime"
     7  )
     8  
     9  // StatsTask holds needed parameters to retrieve a container statistics
    10  type StatsTask struct {
    11  	baseTask
    12  	ID   string
    13  	Stat chan *runtime.Stat
    14  }
    15  
    16  func (s *Supervisor) stats(t *StatsTask) error {
    17  	start := time.Now()
    18  	i, ok := s.containers[t.ID]
    19  	if !ok {
    20  		return ErrContainerNotFound
    21  	}
    22  	// TODO: use workers for this
    23  	go func() {
    24  		s, err := i.container.Stats()
    25  		if err != nil {
    26  			t.ErrorCh() <- err
    27  			return
    28  		}
    29  		t.ErrorCh() <- nil
    30  		t.Stat <- s
    31  		ContainerStatsTimer.UpdateSince(start)
    32  	}()
    33  	return errDeferredResponse
    34  }