Difference between revisions of "ProgressMonitoring"

From AardRock Wiki
Jump to navigation Jump to search
(Imported the ProgressMonitoring page from the old wiki)
 
m (→‎Original design: included first line in code part)
 
Line 18: Line 18:
== Original design ==
== Original design ==


class Worker {
class Worker {
   void schedule(Job job);
   void schedule(Job job);
   void start();
   void start();

Latest revision as of 12:04, 25 April 2006

Progress Monitoring Framework

The progress monitoring framework takes care of the following:

  • Keeping track of the progress of possibly time-consuming actions (jobs).
  • Keeping track of what a job is doing through meaningful messages.
  • Indicating whether a job failed or succeeded, and how.
  • Cancelling jobs.

Usage

If you have a piece of code that is possibly time consuming and you want to provide feedback to the user while the code gets executed, wrap it in a job and call:

CheetahCore.getDefaultJobQueue().enqueue(myJob);

This puts your job in the job queue and allows the Workers to execute it. In your Job implementation of run(), call the appropriate methods on the !ProgressMonitor to provide feedback about your progress.

Original design

class Worker {
  void schedule(Job job);
  void start();
  void addProgressMonitor(ProgressMonitor monitor);
}

interface Job {
  Status run(ProgressMonitor monitor);
}

interface ProgressMonitor {
  void done();
  void setTotalWork(int amount);
  void worked(int amount);
  void setMessage(String message);
  boolean isCancelled();
  void reset();
}

class Status {
  StatusType type;
  Throwable throwable;
  String message;
}

enum StatusType {
  OK, ERROR, CANCELLED;
}


Inspired by Eclipse jobs.