Codebase list golang-github-vbauerster-mpb / cf590a3
refactoring: startTime to start Vladimir Bauer 1 year, 10 months ago
2 changed file(s) with 18 addition(s) and 18 deletion(s). Raw diff Collapse all Expand all
104104 //
105105 // `style` one of [ET_STYLE_GO|ET_STYLE_HHMMSS|ET_STYLE_HHMM|ET_STYLE_MMSS]
106106 //
107 // `startTime` start time
107 // `start` start time
108108 //
109109 // `normalizer` available implementations are [FixedIntervalTimeNormalizer|MaxTolerateTimeNormalizer]
110110 //
111111 // `wcc` optional WC config
112 func NewAverageETA(style TimeStyle, startTime time.Time, normalizer TimeNormalizer, wcc ...WC) Decorator {
112 func NewAverageETA(style TimeStyle, start time.Time, normalizer TimeNormalizer, wcc ...WC) Decorator {
113113 d := &averageETA{
114114 WC: initWC(wcc...),
115 startTime: startTime,
115 start: start,
116116 normalizer: normalizer,
117117 producer: chooseTimeProducer(style),
118118 }
121121
122122 type averageETA struct {
123123 WC
124 startTime time.Time
124 start time.Time
125125 normalizer TimeNormalizer
126126 producer func(time.Duration) string
127127 }
129129 func (d *averageETA) Decor(s Statistics) (string, int) {
130130 var remaining time.Duration
131131 if s.Current != 0 {
132 durPerItem := float64(time.Since(d.startTime)) / float64(s.Current)
132 durPerItem := float64(time.Since(d.start)) / float64(s.Current)
133133 durPerItem = math.Round(durPerItem)
134134 remaining = time.Duration((s.Total - s.Current) * int64(durPerItem))
135135 if d.normalizer != nil {
139139 return d.Format(d.producer(remaining))
140140 }
141141
142 func (d *averageETA) AverageAdjust(startTime time.Time) {
143 d.startTime = startTime
142 func (d *averageETA) AverageAdjust(start time.Time) {
143 d.start = start
144144 }
145145
146146 // MaxTolerateTimeNormalizer returns implementation of TimeNormalizer.
119119 //
120120 // `format` printf compatible verb for value, like "%f" or "%d"
121121 //
122 // `startTime` start time
122 // `start` start time
123123 //
124124 // `wcc` optional WC config
125125 //
129129 // unit=SizeB1024(0), format="% .1f" output: "1.0 MiB/s"
130130 // unit=SizeB1000(0), format="%.1f" output: "1.0MB/s"
131131 // unit=SizeB1000(0), format="% .1f" output: "1.0 MB/s"
132 func NewAverageSpeed(unit interface{}, format string, startTime time.Time, wcc ...WC) Decorator {
132 func NewAverageSpeed(unit interface{}, format string, start time.Time, wcc ...WC) Decorator {
133133 d := &averageSpeed{
134 WC: initWC(wcc...),
135 startTime: startTime,
136 producer: chooseSpeedProducer(unit, format),
134 WC: initWC(wcc...),
135 start: start,
136 producer: chooseSpeedProducer(unit, format),
137137 }
138138 return d
139139 }
140140
141141 type averageSpeed struct {
142142 WC
143 startTime time.Time
144 producer func(float64) string
145 msg string
143 start time.Time
144 producer func(float64) string
145 msg string
146146 }
147147
148148 func (d *averageSpeed) Decor(s Statistics) (string, int) {
149149 if !s.Completed {
150 speed := float64(s.Current) / float64(time.Since(d.startTime))
150 speed := float64(s.Current) / float64(time.Since(d.start))
151151 d.msg = d.producer(speed * 1e9)
152152 }
153153 return d.Format(d.msg)
154154 }
155155
156 func (d *averageSpeed) AverageAdjust(startTime time.Time) {
157 d.startTime = startTime
156 func (d *averageSpeed) AverageAdjust(start time.Time) {
157 d.start = start
158158 }
159159
160160 func chooseSpeedProducer(unit interface{}, format string) func(float64) string {