package supervisor

import (
	"time"

	"github.com/docker/containerd/runtime"
)

// StatsTask holds needed parameters to retrieve a container statistics
type StatsTask struct {
	baseTask
	ID   string
	Stat chan *runtime.Stat
}

func (s *Supervisor) stats(t *StatsTask) error {
	start := time.Now()
	i, ok := s.containers[t.ID]
	if !ok {
		return ErrContainerNotFound
	}
	// TODO: use workers for this
	go func() {
		s, err := i.container.Stats()
		if err != nil {
			t.ErrorCh() <- err
			return
		}
		t.ErrorCh() <- nil
		t.Stat <- s
		ContainerStatsTimer.UpdateSince(start)
	}()
	return errDeferredResponse
}