package stats import ( "bufio" "sync" "time" "github.com/docker/docker/api/types" "github.com/docker/docker/container" "github.com/docker/docker/pkg/pubsub" ) type supervisor interface { // GetContainerStats collects all the stats related to a container GetContainerStats(container *container.Container) (*types.StatsJSON, error) } // NewCollector creates a stats collector that will poll the supervisor with the specified interval func NewCollector(supervisor supervisor, interval time.Duration) *Collector { s := &Collector{ interval: interval, supervisor: supervisor, publishers: make(map[*container.Container]*pubsub.Publisher), bufReader: bufio.NewReaderSize(nil, 128), } platformNewStatsCollector(s) return s } // Collector manages and provides container resource stats type Collector struct { m sync.Mutex supervisor supervisor interval time.Duration publishers map[*container.Container]*pubsub.Publisher bufReader *bufio.Reader // The following fields are not set on Windows currently. clockTicksPerSecond uint64 }