Codebase list golang-github-vbauerster-mpb / 418fc7e
choose producer funcs Vladimir Bauer 6 years ago
2 changed file(s) with 31 addition(s) and 34 deletion(s). Raw diff Collapse all Expand all
5454 WC: wc,
5555 average: average,
5656 normalizer: normalizer,
57 producer: chooseProducer(style),
57 producer: chooseEtaProducer(style),
5858 }
5959 return d
6060 }
121121 d := &averageETA{
122122 WC: wc,
123123 startTime: startTime,
124 producer: chooseProducer(style),
124 producer: chooseEtaProducer(style),
125125 }
126126 return d
127127 }
191191 })
192192 }
193193
194 func chooseProducer(style TimeStyle) func(time.Duration) string {
194 func chooseEtaProducer(style TimeStyle) func(time.Duration) string {
195195 switch style {
196196 case ET_STYLE_HHMMSS:
197197 return func(remaining time.Duration) string {
2222 // work duration as second argument, in order for this decorator to
2323 // work correctly. This decorator is a wrapper of MovingAverageSpeed.
2424 func EwmaSpeed(unit int, format string, age float64, wcc ...WC) Decorator {
25 return MovingAverageSpeed(unit, format, ewma.NewMovingAverage(age), wcc...)
25 var average MovingAverage
26 if age == 0.0 {
27 average = ewma.NewMovingAverage()
28 } else {
29 average = ewma.NewMovingAverage(age)
30 }
31 return MovingAverageSpeed(unit, format, average, wcc...)
2632 }
2733
2834 // MovingAverageSpeed decorator relies on MovingAverage implementation
5359 }
5460 wc.Init()
5561 d := &movingAverageSpeed{
56 WC: wc,
57 average: average,
58 }
59 switch unit {
60 case UnitKiB:
61 d.producer = func(speed float64) string {
62 return fmt.Sprintf(format, &speedType{SizeB1024(math.Round(speed))})
63 }
64 case UnitKB:
65 d.producer = func(speed float64) string {
66 return fmt.Sprintf(format, &speedType{SizeB1000(math.Round(speed))})
67 }
68 default:
69 d.producer = func(speed float64) string {
70 return fmt.Sprintf(format, speed)
71 }
62 WC: wc,
63 average: average,
64 producer: chooseSpeedProducer(unit, format),
7265 }
7366 return d
7467 }
146139 d := &averageSpeed{
147140 WC: wc,
148141 startTime: startTime,
149 }
150 switch unit {
151 case UnitKiB:
152 d.producer = func(speed float64) string {
153 return fmt.Sprintf(format, &speedType{SizeB1024(math.Round(speed))})
154 }
155 case UnitKB:
156 d.producer = func(speed float64) string {
157 return fmt.Sprintf(format, &speedType{SizeB1000(math.Round(speed))})
158 }
159 default:
160 d.producer = func(speed float64) string {
161 return fmt.Sprintf(format, speed)
162 }
142 producer: chooseSpeedProducer(unit, format),
163143 }
164144 return d
165145 }
193173 func (d *averageSpeed) AverageAdjust(startTime time.Time) {
194174 d.startTime = startTime
195175 }
176
177 func chooseSpeedProducer(unit int, format string) func(float64) string {
178 switch unit {
179 case UnitKiB:
180 return func(speed float64) string {
181 return fmt.Sprintf(format, &speedType{SizeB1024(math.Round(speed))})
182 }
183 case UnitKB:
184 return func(speed float64) string {
185 return fmt.Sprintf(format, &speedType{SizeB1000(math.Round(speed))})
186 }
187 default:
188 return func(speed float64) string {
189 return fmt.Sprintf(format, speed)
190 }
191 }
192 }