Struct irox_progress::Task
source · pub struct Task { /* private fields */ }Expand description
A task is a specific tracked operation. It has:
- A Name
- A unique ID
- A creation time
- The current progress of the task (in “elements”), the ‘counter’.
- An (optional) maximum number of elements.
- A time the task was “started”
- The estimated amount of time the task has remaining
- A time the task has “ended”
- A list of any “Child Tasks” that this task can spawn.
Implementations§
source§impl Task
impl Task
sourcepub fn new(id: u64, name: String, max_elements: u64) -> Task
pub fn new(id: u64, name: String, max_elements: u64) -> Task
Creates a new finite, named task with the specified ID.
Examples found in repository?
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
pub fn main() -> Result<(), std::io::Error> {
let elements = 1000;
let prog = ConsoleProgressPrinter::new_update_rate(Duration::from_millis(100));
let task = Task::new(0, "Test Task".to_string(), u64::MAX);
prog.track_task_progress(&task);
task.mark_started();
for _i in 0..elements {
task.mark_one_completed();
std::thread::sleep(std::time::Duration::from_millis(5));
}
Ok(())
}sourcepub fn new_infinite(id: u64, name: String) -> Task
pub fn new_infinite(id: u64, name: String) -> Task
Creates a new infinite, named task with a specific ID.
sourcepub fn new_infinite_named(name: String) -> Task
pub fn new_infinite_named(name: String) -> Task
Creates a new infinite, named task with a random ID
Examples found in repository?
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
pub fn main() -> Result<(), Error> {
let mut rand = Random::default();
let cons = ConsoleProgressPrinter::new_update_rate(Duration::from_millis(100));
let task = Task::new_infinite_named("Writer".to_string());
cons.track_task_progress(&task);
task.mark_started();
let out = OpenOptions::new()
.write(true)
.truncate(true)
.create(true)
.open("test")?;
let out = BufWriter::new(out);
let mut out = WriterTask::new(out, task);
let gb = 1_000_000_000 / 8;
for _i in 0..gb {
out.write_be_u64(rand.next_u64())?;
}
Ok(())
}sourcepub fn new_named(name: String, max_elements: u64) -> Task
pub fn new_named(name: String, max_elements: u64) -> Task
Creates a new finite, named task with a random ID.
sourcepub fn current_progress_count(&self) -> u64
pub fn current_progress_count(&self) -> u64
Returns the number of elements completed in the range 0..=max_elements
sourcepub fn max_elements(&self) -> u64
pub fn max_elements(&self) -> u64
Returns the maximum number of elements of this task
sourcepub fn current_progress_frac(&self) -> f64
pub fn current_progress_frac(&self) -> f64
Returns the current progress as a fraction in the range 0..=1
sourcepub fn get_created(&self) -> UnixTimestamp
pub fn get_created(&self) -> UnixTimestamp
Returns the time this task was created
sourcepub fn get_started(&self) -> Option<&UnixTimestamp>
pub fn get_started(&self) -> Option<&UnixTimestamp>
Returns the time at which this task started, or None if the task hasn’t started yet.
sourcepub fn mark_one_completed(&self)
pub fn mark_one_completed(&self)
Increments the ‘completed’ counter.
Examples found in repository?
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
pub fn main() -> Result<(), std::io::Error> {
let elements = 1000;
let prog = ConsoleProgressPrinter::new_update_rate(Duration::from_millis(100));
let task = Task::new(0, "Test Task".to_string(), u64::MAX);
prog.track_task_progress(&task);
task.mark_started();
for _i in 0..elements {
task.mark_one_completed();
std::thread::sleep(std::time::Duration::from_millis(5));
}
Ok(())
}sourcepub fn mark_all_completed(&self)
pub fn mark_all_completed(&self)
Mark this task complete. Does not affect sub-tasks.
sourcepub fn mark_some_completed(&self, completed: u64)
pub fn mark_some_completed(&self, completed: u64)
Mark some some portion of this task as completed.
pub fn get_remaining_time(&self) -> Duration
sourcepub fn mark_started(&self)
pub fn mark_started(&self)
Marks this task as started. If the task has already started, does nothing.
Examples found in repository?
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
pub fn main() -> Result<(), std::io::Error> {
let elements = 1000;
let prog = ConsoleProgressPrinter::new_update_rate(Duration::from_millis(100));
let task = Task::new(0, "Test Task".to_string(), u64::MAX);
prog.track_task_progress(&task);
task.mark_started();
for _i in 0..elements {
task.mark_one_completed();
std::thread::sleep(std::time::Duration::from_millis(5));
}
Ok(())
}More examples
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
pub fn main() -> Result<(), Error> {
let mut rand = Random::default();
let cons = ConsoleProgressPrinter::new_update_rate(Duration::from_millis(100));
let task = Task::new_infinite_named("Writer".to_string());
cons.track_task_progress(&task);
task.mark_started();
let out = OpenOptions::new()
.write(true)
.truncate(true)
.create(true)
.open("test")?;
let out = BufWriter::new(out);
let mut out = WriterTask::new(out, task);
let gb = 1_000_000_000 / 8;
for _i in 0..gb {
out.write_be_u64(rand.next_u64())?;
}
Ok(())
}sourcepub fn get_ended(&self) -> Option<&UnixTimestamp>
pub fn get_ended(&self) -> Option<&UnixTimestamp>
Returns the time at which this task ended, or None if the task hasn’t ended yet.
sourcepub fn mark_ended(&self)
pub fn mark_ended(&self)
Marks this task as ended. If this task has already ended, does nothing.
sourcepub fn num_children(&self) -> usize
pub fn num_children(&self) -> usize
Returns the number of child tasks this task has
sourcepub fn each_child<F: FnMut(&Task)>(&self, func: F)
pub fn each_child<F: FnMut(&Task)>(&self, func: F)
Iterates over each child task, providing a reference of the child task to the input function
pub fn clean_completed_children(&self) -> Vec<Task>
sourcepub fn new_child_task(&self, id: u64, name: String, max_elements: u64) -> Task
pub fn new_child_task(&self, id: u64, name: String, max_elements: u64) -> Task
Creates a new child task of this task
sourcepub fn push_new_child_task(&self, task: Task)
pub fn push_new_child_task(&self, task: Task)
Appends this task as a tracked child task.
sourcepub fn is_complete(&self) -> bool
pub fn is_complete(&self) -> bool
Returns true if this task is complete.
sourcepub fn cancel(&self)
pub fn cancel(&self)
Marks this task as “Cancelled”. Users of this task may opt to ignore this flag, it’s really more like a suggestion.
sourcepub fn is_cancelled(&self) -> bool
pub fn is_cancelled(&self) -> bool
Returns true if this task has been marked ‘cancelled’. Cancelling a task is a one-way operation.