Manages the sharing of an NProgress object between reading and writing threads.
More...
#include <progress/nprogressmanager.h>
Manages the sharing of an NProgress object between reading and writing threads.
The life cycle of an NProgressManager and the corresponding NProgress is as follows. Note that the reading thread is the interface thread that is querying the state of progress, and the writing thread is the thread in which the operation is actually being performed.
- Before the operation begins, an NProgressManager is created and both the reading and writing threads have access to it. This can be achieved for instance by having the reading thread create an NProgressManager and pass it to the writing thread as a parameter of the actual operation function call.
- The writing thread:
- The reading thread:
- repeatedly calls isStarted() and waits until this returns
true
;
- now knows the NProgress has been created and begins querying it using getProgress() and displaying progress reports;
- whilst querying, repeatedly calls isFinished() to test if the operation is complete;
- once isFinished() returns
true
, displays the final progress message to the user and destroys the NProgressManager.
- Note that the NProgressManager destructor will automatically destroy the NProgress. It is imperative that the writing thread does not touch either the NProgress or the NProgressManager after calling NProgress::setFinished(), since once isFinished() returns
true
the reading thread might destroy the NProgressManager and thus the NProgress at any time. The writing thread cannot destroy these objects because it has no guarantee that the reading thread is not still reading progress reports from them.
- Deprecated:
- This class is deprecated. Please use the more flexible and more streamlined NProgressTracker class instead.
regina::NProgressManager::NProgressManager |
( |
) | |
|
|
inline |
Creates a new progress manager with no NProgress to manage.
regina::NProgressManager::~NProgressManager |
( |
) | |
|
|
inline |
const NProgress * regina::NProgressManager::getProgress |
( |
) | |
const |
|
inline |
Returns the NProgress that this manager is managing.
If isStarted() returns true
, you are guaranteed that this routine will not return zero.
- Returns
- the NProgress that this manager is managing, or 0 if an NProgress has not yet been assigned to this manager.
bool regina::NProgressManager::isFinished |
( |
) | |
const |
|
inline |
Determines if the NProgress that we are managing has finished.
That is, this routine determines if NProgress::isFinished() returns true
.
Once this routine returns true
, it will always return true
; thus there will be no need to call it again.
- Precondition
- There is an NProgress assigned to this manager; that is, isStarted() returns
true
.
- Returns
true
if and only if the NProgress that we are managing has finished.
bool regina::NProgressManager::isStarted |
( |
) | |
const |
|
inline |
Determines if an NProgress has been assigned to this manager yet.
Once this routine returns true
, it will always return true
; thus there will be no need to call it again.
- Returns
true
if and only if an NProgress has been assigned to this manager.
void regina::NProgressManager::setProgress |
( |
NProgress * |
newProgress) | |
|
|
inline |
Assigns the given NProgress to this manager to manage.
- Precondition
- setProgress() has not already been called.
- Python:
- Not present; this routine should only be called from within calculation engine routines whose progress is being watched.
- Parameters
-
newProgress | the NProgress that this manager will manage. |
void regina::NProgressManager::writeTextShort |
( |
std::ostream & |
out) | |
const |
|
inlinevirtual |
Writes this object in short text format to the given output stream.
The output should be human-readable, should fit on a single line, and should not end with a newline.
- Python:
- The parameter out does not exist; standard output will be used.
- Parameters
-
out | the output stream to which to write. |
Implements regina::ShareableObject.
The documentation for this class was generated from the following file: