BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
JobWorker Class Reference

The JobWorker class provides running the domain simulation in a thread. More...

Inheritance diagram for JobWorker:
[legend]
Collaboration diagram for JobWorker:
[legend]

Public Slots

void start ()
 
void terminate ()
 Sets request for JobRunner to terminate underlying domain simulation. More...
 

Signals

void finished ()
 
void progressUpdate ()
 
void started ()
 

Public Member Functions

 JobWorker (const QString &identifier, ISimulation *simulation)
 
QString failureMessage () const
 
QString identifier () const
 
int progress () const
 
int simulationDuration () const
 
QString status () const
 

Private Member Functions

bool updateProgress (int percentage_done)
 Sets current progress. Returns true if we want to continue the simulation. More...
 

Private Attributes

QString m_failure_message
 
QString m_identifier
 
QString m_job_status
 
int m_percentage_done
 
ISimulationm_simulation
 
int m_simulation_duration
 
bool m_terminate_request_flag
 

Detailed Description

The JobWorker class provides running the domain simulation in a thread.

Definition at line 24 of file JobWorker.h.

Constructor & Destructor Documentation

◆ JobWorker()

JobWorker::JobWorker ( const QString &  identifier,
ISimulation simulation 
)

Definition at line 20 of file JobWorker.cpp.

22  , m_simulation(simulation)
24  , m_job_status("Idle")
27 {
28 }
int m_percentage_done
Definition: JobWorker.h:53
int m_simulation_duration
Definition: JobWorker.h:57
QString identifier() const
Definition: JobWorker.cpp:30
QString m_job_status
Definition: JobWorker.h:54
bool m_terminate_request_flag
Definition: JobWorker.h:55
QString m_identifier
Definition: JobWorker.h:51
ISimulation * m_simulation
Definition: JobWorker.h:52

Member Function Documentation

◆ failureMessage()

QString JobWorker::failureMessage ( ) const

Definition at line 86 of file JobWorker.cpp.

87 {
88  return m_failure_message;
89 }
QString m_failure_message
Definition: JobWorker.h:56

References m_failure_message.

Referenced by JobQueueData::processFinishedJob().

◆ finished

void JobWorker::finished ( )
signal

Referenced by JobQueueData::runJob(), and start().

◆ identifier()

QString JobWorker::identifier ( ) const

Definition at line 30 of file JobWorker.cpp.

31 {
32  return m_identifier;
33 }

References m_identifier.

Referenced by JobQueueData::processFinishedJob().

◆ progress()

int JobWorker::progress ( ) const

Definition at line 35 of file JobWorker.cpp.

36 {
37  return m_percentage_done;
38 }

References m_percentage_done.

◆ progressUpdate

void JobWorker::progressUpdate ( )
signal

◆ simulationDuration()

int JobWorker::simulationDuration ( ) const

Definition at line 91 of file JobWorker.cpp.

92 {
93  return m_simulation_duration;
94 }

References m_simulation_duration.

Referenced by JobQueueData::processFinishedJob().

◆ start

void JobWorker::start ( )
slot

Definition at line 40 of file JobWorker.cpp.

41 {
44  emit started();
45 
46  if (m_simulation) {
47  m_simulation->subscribe([this](size_t percentage_done) {
48  return updateProgress(static_cast<int>(percentage_done));
49  });
50 
51  m_job_status = "Running";
52 
53  try {
54  QDateTime beginTime = QDateTime::currentDateTime();
56  if (m_job_status != "Canceled")
57  m_job_status = "Completed";
58 
59  QDateTime endTime = QDateTime::currentDateTime();
60  m_simulation_duration = static_cast<int>(beginTime.msecsTo(endTime));
61 
62  } catch (const std::exception& ex) {
63  m_job_status = "Failed";
64  m_percentage_done = 100;
66  "JobRunner::start() -> ISimulation failed with exception throw:\n\n";
67 
68  m_failure_message.append(QString(ex.what()));
69  }
70 
71  } else {
72  m_job_status = "Failed";
73  m_percentage_done = 100;
74  m_failure_message = "JobRunner::start() -> Error. ISimulation doesn't exist.";
75  }
76 
77  emit progressUpdate();
78  emit finished();
79 }
void runSimulation()
Run a simulation, possibly averaged over parameter distributions.
void subscribe(ProgressHandler::Callback_t inform)
Definition: ISimulation.h:94
bool updateProgress(int percentage_done)
Sets current progress. Returns true if we want to continue the simulation.
Definition: JobWorker.cpp:106
void progressUpdate()
void finished()
void started()
QString currentDateTime()
Definition: GUIHelpers.cpp:210

References GUIHelpers::currentDateTime(), finished(), m_failure_message, m_job_status, m_percentage_done, m_simulation, m_simulation_duration, m_terminate_request_flag, progressUpdate(), ISimulation::runSimulation(), started(), ISimulation::subscribe(), and updateProgress().

Referenced by JobQueueData::runJob().

Here is the call graph for this function:

◆ started

void JobWorker::started ( )
signal

Referenced by JobQueueData::runJob(), and start().

◆ status()

QString JobWorker::status ( ) const

Definition at line 81 of file JobWorker.cpp.

82 {
83  return m_job_status;
84 }

References m_job_status.

Referenced by JobQueueData::processFinishedJob().

◆ terminate

void JobWorker::terminate ( )
slot

Sets request for JobRunner to terminate underlying domain simulation.

Definition at line 98 of file JobWorker.cpp.

99 {
101  m_job_status = "Canceled";
102 }

References m_job_status, and m_terminate_request_flag.

Referenced by JobQueueData::cancelJob().

◆ updateProgress()

bool JobWorker::updateProgress ( int  percentage_done)
private

Sets current progress. Returns true if we want to continue the simulation.

Definition at line 106 of file JobWorker.cpp.

107 {
108  if (percentage_done > m_percentage_done) {
109  m_percentage_done = percentage_done;
110  emit progressUpdate();
111  }
112  return !m_terminate_request_flag;
113 }

References m_percentage_done, m_terminate_request_flag, and progressUpdate().

Referenced by start().

Member Data Documentation

◆ m_failure_message

QString JobWorker::m_failure_message
private

Definition at line 56 of file JobWorker.h.

Referenced by failureMessage(), and start().

◆ m_identifier

QString JobWorker::m_identifier
private

Definition at line 51 of file JobWorker.h.

Referenced by identifier().

◆ m_job_status

QString JobWorker::m_job_status
private

Definition at line 54 of file JobWorker.h.

Referenced by start(), status(), and terminate().

◆ m_percentage_done

int JobWorker::m_percentage_done
private

Definition at line 53 of file JobWorker.h.

Referenced by progress(), start(), and updateProgress().

◆ m_simulation

ISimulation* JobWorker::m_simulation
private

Definition at line 52 of file JobWorker.h.

Referenced by start().

◆ m_simulation_duration

int JobWorker::m_simulation_duration
private

Definition at line 57 of file JobWorker.h.

Referenced by simulationDuration(), and start().

◆ m_terminate_request_flag

bool JobWorker::m_terminate_request_flag
private

Definition at line 55 of file JobWorker.h.

Referenced by start(), terminate(), and updateProgress().


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