Skip to content

Commit a38d22c

Browse files
committed
Merge branch 'log-fixes'
2 parents 02fcb9b + 78272c0 commit a38d22c

File tree

3 files changed

+32
-24
lines changed

3 files changed

+32
-24
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ all-features = true
101101
[dev-dependencies]
102102
rand = "0.8.1"
103103
env_logger = { version = "0.10.0", default-features = false, features = ["humantime"] }
104-
criterion = { version = "0.4.0", default-features = false }
104+
criterion = { version = "0.5.1", default-features = false }
105105
futures-util = { version = "0.3.4", default-features = false }
106106
argh = "0.1.3"
107107
futures = "0.3.5"

src/progress/log.rs

Lines changed: 29 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ pub struct Log {
2121
id: Id,
2222
max: Option<usize>,
2323
unit: Option<Unit>,
24-
step: usize,
24+
step: StepShared,
2525
current_level: usize,
2626
max_level: usize,
2727
trigger: Arc<AtomicBool>,
@@ -50,13 +50,29 @@ impl Log {
5050
current_level: 0,
5151
max_level: max_level.unwrap_or(usize::MAX),
5252
max: None,
53-
step: 0,
53+
step: Default::default(),
5454
unit: None,
5555
trigger,
5656
}
5757
}
5858
}
5959

60+
impl Log {
61+
fn maybe_log(&self) {
62+
if self.current_level > self.max_level {
63+
return;
64+
}
65+
let step = self.step();
66+
if self.trigger.swap(false, Ordering::Relaxed) {
67+
match (self.max, &self.unit) {
68+
(max, Some(unit)) => log::info!("{} → {}", self.name, unit.display(step, max, None)),
69+
(Some(max), None) => log::info!("{} → {} / {}", self.name, step, max),
70+
(None, None) => log::info!("{} → {}", self.name, step),
71+
}
72+
}
73+
}
74+
}
75+
6076
impl Progress for Log {
6177
type SubProgress = Log;
6278

@@ -70,37 +86,28 @@ impl Progress for Log {
7086
id,
7187
current_level: self.current_level + 1,
7288
max_level: self.max_level,
73-
step: 0,
89+
step: Default::default(),
7490
max: None,
7591
unit: None,
7692
trigger: Arc::clone(&self.trigger),
7793
}
7894
}
7995

80-
fn init(&mut self, max: Option<usize>, unit: Option<Unit>) {
96+
fn init(&mut self, max: Option<Step>, unit: Option<Unit>) {
8197
self.max = max;
8298
self.unit = unit;
8399
}
84100

85-
fn set(&mut self, step: usize) {
86-
self.step = step;
87-
if self.current_level > self.max_level {
88-
return;
89-
}
90-
if self.trigger.swap(false, Ordering::Relaxed) {
91-
match (self.max, &self.unit) {
92-
(max, Some(unit)) => log::info!("{} → {}", self.name, unit.display(step, max, None)),
93-
(Some(max), None) => log::info!("{} → {} / {}", self.name, step, max),
94-
(None, None) => log::info!("{} → {}", self.name, step),
95-
}
96-
}
101+
fn set(&mut self, step: Step) {
102+
self.step.store(step, Ordering::SeqCst);
103+
self.maybe_log()
97104
}
98105

99106
fn unit(&self) -> Option<Unit> {
100107
self.unit.clone()
101108
}
102109

103-
fn max(&self) -> Option<usize> {
110+
fn max(&self) -> Option<Step> {
104111
self.max
105112
}
106113

@@ -111,11 +118,12 @@ impl Progress for Log {
111118
}
112119

113120
fn step(&self) -> usize {
114-
self.step
121+
self.step.load(Ordering::Relaxed)
115122
}
116123

117-
fn inc_by(&mut self, step: usize) {
118-
self.set(self.step + step)
124+
fn inc_by(&mut self, step: Step) {
125+
self.step.fetch_add(step, Ordering::SeqCst);
126+
self.maybe_log()
119127
}
120128

121129
fn set_name(&mut self, name: impl Into<String>) {
@@ -146,6 +154,6 @@ impl Progress for Log {
146154
}
147155

148156
fn counter(&self) -> Option<StepShared> {
149-
None
157+
Some(self.step.clone())
150158
}
151159
}

src/tree/item.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ impl Item {
166166
.value_mut()
167167
.progress
168168
.as_mut()
169-
.and_then(|mut p| {
169+
.and_then(|p| {
170170
let prev = p.done_at;
171171
p.done_at = max;
172172
prev
@@ -176,7 +176,7 @@ impl Item {
176176
{
177177
self.tree
178178
.get_mut(&self.key, |v| {
179-
v.progress.as_mut().and_then(|mut p| {
179+
v.progress.as_mut().and_then(|p| {
180180
let prev = p.done_at;
181181
p.done_at = max;
182182
prev

0 commit comments

Comments
 (0)