github.com/lazyboychen7/engine@v17.12.1-ce-rc2+incompatible/daemon/stats/types.go (about) 1 package stats 2 3 import ( 4 "bufio" 5 "sync" 6 "time" 7 8 "github.com/docker/docker/api/types" 9 "github.com/docker/docker/container" 10 "github.com/docker/docker/pkg/pubsub" 11 ) 12 13 type supervisor interface { 14 // GetContainerStats collects all the stats related to a container 15 GetContainerStats(container *container.Container) (*types.StatsJSON, error) 16 } 17 18 // NewCollector creates a stats collector that will poll the supervisor with the specified interval 19 func NewCollector(supervisor supervisor, interval time.Duration) *Collector { 20 s := &Collector{ 21 interval: interval, 22 supervisor: supervisor, 23 publishers: make(map[*container.Container]*pubsub.Publisher), 24 bufReader: bufio.NewReaderSize(nil, 128), 25 } 26 27 platformNewStatsCollector(s) 28 29 return s 30 } 31 32 // Collector manages and provides container resource stats 33 type Collector struct { 34 m sync.Mutex 35 supervisor supervisor 36 interval time.Duration 37 publishers map[*container.Container]*pubsub.Publisher 38 bufReader *bufio.Reader 39 40 // The following fields are not set on Windows currently. 41 clockTicksPerSecond uint64 42 }