BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
ModelView::ProgressHandler Class Reference

Maintain information about progress of a computation. More...

Public Types

using callback_t = std::function< bool(size_t)>
 

Public Member Functions

 ProgressHandler ()=default
 
 ProgressHandler (callback_t callback, size_t max_ticks_count)
 
 ProgressHandler (const ProgressHandler &other)=delete
 
bool has_interrupt_request () const
 
ProgressHandleroperator= (const ProgressHandler &other)=delete
 
void reset ()
 Resets progress. More...
 
void setCompletedTicks (size_t value)
 Increment number of completed computation steps. More...
 
void setMaxTicksCount (size_t value)
 Sets expected ticks count, representing progress of a computation. More...
 
void subscribe (callback_t callback)
 

Private Attributes

size_t completed_ticks {0}
 
bool interrupt_request {false}
 
size_t max_ticks_count {0}
 
std::mutex mutex
 
callback_t runner_callback
 

Detailed Description

Maintain information about progress of a computation.

Initialized with callback function to report progress and retrieve interruption request status.

Definition at line 27 of file progresshandler.h.

Member Typedef Documentation

◆ callback_t

using ModelView::ProgressHandler::callback_t = std::function<bool(size_t)>

Definition at line 29 of file progresshandler.h.

Constructor & Destructor Documentation

◆ ProgressHandler() [1/3]

ModelView::ProgressHandler::ProgressHandler ( )
default

◆ ProgressHandler() [2/3]

ProgressHandler::ProgressHandler ( ProgressHandler::callback_t  callback,
size_t  max_ticks_count 
)

Definition at line 19 of file progresshandler.cpp.

20  : runner_callback(std::move(callback)), max_ticks_count(max_ticks_count)
21 {
22 }

◆ ProgressHandler() [3/3]

ModelView::ProgressHandler::ProgressHandler ( const ProgressHandler other)
delete

Member Function Documentation

◆ has_interrupt_request()

bool ProgressHandler::has_interrupt_request ( ) const

Definition at line 37 of file progresshandler.cpp.

38 {
39  return interrupt_request;
40 }

References interrupt_request.

Referenced by gui2::SpecularToySimulation::runSimulation(), and TEST_F().

◆ operator=()

ProgressHandler& ModelView::ProgressHandler::operator= ( const ProgressHandler other)
delete

◆ reset()

void ProgressHandler::reset ( )

Resets progress.

Definition at line 57 of file progresshandler.cpp.

58 {
59  interrupt_request = false;
60  completed_ticks = 0;
61 }

References completed_ticks, and interrupt_request.

Referenced by gui2::SpecularToySimulation::runSimulation(), setMaxTicksCount(), and TEST_F().

◆ setCompletedTicks()

void ProgressHandler::setCompletedTicks ( size_t  value)

Increment number of completed computation steps.

Performs callback to inform subscriber about current progress (in percents) and retrieves interrupt request flag.

Definition at line 45 of file progresshandler.cpp.

46 {
47  std::unique_lock<std::mutex> lock(mutex);
48  completed_ticks += value;
51  int percentage_done = static_cast<int>(100.0 * completed_ticks / max_ticks_count);
53 }

References completed_ticks, interrupt_request, max_ticks_count, mutex, and runner_callback.

Referenced by gui2::SpecularToySimulation::runSimulation(), and TEST_F().

◆ setMaxTicksCount()

void ProgressHandler::setMaxTicksCount ( size_t  value)

Sets expected ticks count, representing progress of a computation.

Definition at line 31 of file progresshandler.cpp.

32 {
33  reset();
34  max_ticks_count = value;
35 }
void reset()
Resets progress.

References max_ticks_count, and reset().

Referenced by gui2::SpecularToySimulation::setProgressCallback().

Here is the call graph for this function:

◆ subscribe()

void ProgressHandler::subscribe ( ProgressHandler::callback_t  callback)

Definition at line 24 of file progresshandler.cpp.

25 {
26  runner_callback = std::move(callback);
27 }

References runner_callback.

Referenced by gui2::SpecularToySimulation::setProgressCallback().

Member Data Documentation

◆ completed_ticks

size_t ModelView::ProgressHandler::completed_ticks {0}
private

Definition at line 51 of file progresshandler.h.

Referenced by reset(), and setCompletedTicks().

◆ interrupt_request

bool ModelView::ProgressHandler::interrupt_request {false}
private

Definition at line 52 of file progresshandler.h.

Referenced by has_interrupt_request(), reset(), and setCompletedTicks().

◆ max_ticks_count

size_t ModelView::ProgressHandler::max_ticks_count {0}
private

Definition at line 50 of file progresshandler.h.

Referenced by setCompletedTicks(), and setMaxTicksCount().

◆ mutex

std::mutex ModelView::ProgressHandler::mutex
private

Definition at line 48 of file progresshandler.h.

Referenced by setCompletedTicks().

◆ runner_callback

callback_t ModelView::ProgressHandler::runner_callback
private

Definition at line 49 of file progresshandler.h.

Referenced by setCompletedTicks(), and subscribe().


The documentation for this class was generated from the following files: