use std::collections::HashMap;
#[derive(Debug, Clone, Default)]
pub struct ProcessingContext {
processing: HashMap<Option<String>, usize>,
}
impl ProcessingContext {
pub fn add(&mut self, playlist: Option<String>, track_count: usize) {
self.processing.insert(playlist, track_count);
}
pub fn decrement(&mut self, playlist: Option<String>) {
let mut remove = false;
if let Some(track_count) = self.processing.get_mut(&playlist) {
*track_count = track_count.saturating_sub(1);
if *track_count == 0 {
remove = true;
}
}
if remove {
self.processing.remove(&playlist);
}
}
pub fn total(&self) -> usize {
self.processing.values().sum()
}
}