BluezQt 5.109.0
|
This class represents an asynchronous job performed by BluezQt, it is usually not used directly but instead it is inherit by some other class. More...
#include <BluezQt/Job>
Public Types | |
enum | Error { NoError = 0 , UserDefinedError = 100 } |
Error type. More... | |
Properties | |
int | error |
QString | errorText |
bool | finished |
bool | running |
Public Slots | |
void | kill () |
Kills the job. | |
void | start () |
Starts the job asynchronously. | |
Public Member Functions | |
Job (QObject *parent=nullptr) | |
Creates a new Job object. | |
~Job () override | |
Destroys a Job object. | |
int | error () const |
Returns the error code, if there has been an error. | |
QString | errorText () const |
Returns the error text if there has been an error. | |
bool | exec () |
Executes the job synchronously. | |
bool | isFinished () const |
Returns whether the job have already finished. | |
bool | isRunning () const |
Returns whether the job is currently running. | |
Protected Slots | |
virtual void | doStart ()=0 |
Implementation for start() that will be executed in next loop. | |
Protected Member Functions | |
virtual void | doEmitResult ()=0 |
Implementation for emitting the result signal. | |
void | emitResult () |
Utility function to emit the result signal, and suicide this job. | |
void | setError (int errorCode) |
Sets the error code. | |
void | setErrorText (const QString &errorText) |
Sets the error text. | |
This class represents an asynchronous job performed by BluezQt, it is usually not used directly but instead it is inherit by some other class.
There are two ways of using this class, one is via exec() which will block the thread until a result is fetched, the other is via connecting to the signal result()
Please, think twice before using exec(), it should be used only in either unittest or cli apps.
enum BluezQt::Job::Error |
|
explicit |
Creates a new Job object.
parent |
|
override |
Destroys a Job object.
|
protectedpure virtual |
Implementation for emitting the result signal.
This function is needed to be able to emit result() signal with the job pointer's type being subclass
|
protectedpure virtualslot |
Implementation for start() that will be executed in next loop.
This slot is always called in the next loop, triggered by start().
When implementing this method is important to remember that jobs are not executed on a different thread (unless done that way), so any blocking task has to be done in a different thread or process.
|
protected |
Utility function to emit the result signal, and suicide this job.
int BluezQt::Job::error | ( | ) | const |
Returns the error code, if there has been an error.
Make sure to call this once result() has been emitted
QString BluezQt::Job::errorText | ( | ) | const |
Returns the error text if there has been an error.
Only call if error is not 0.
This is usually some extra data associated with the error, such as a URL. Use errorString() to get a human-readable, translated message.
bool BluezQt::Job::exec | ( | ) |
Executes the job synchronously.
This will start a nested QEventLoop internally. Nested event loop can be dangerous and can have unintended side effects, you should avoid calling exec() whenever you can and use the asynchronous interface of Job instead.
Should you indeed call this method, you need to make sure that all callers are reentrant, so that events delivered by the inner event loop don't cause non-reentrant functions to be called, which usually wreaks havoc.
Note that the event loop started by this method does not process user input events, which means your user interface will effectively be blocked. Other events like paint or network events are still being processed. The advantage of not processing user input events is that the chance of accidental reentrancy is greatly reduced. Still you should avoid calling this function.
bool BluezQt::Job::isFinished | ( | ) | const |
Returns whether the job have already finished.
bool BluezQt::Job::isRunning | ( | ) | const |
Returns whether the job is currently running.
|
slot |
Kills the job.
This method will kill the job and then call deleteLater(). Only jobs started with start() can be killed.
It will not emit result signal.
|
protected |
Sets the error code.
It should be called when an error is encountered in the job, just before calling emitResult().
You should define an enum of error codes, with values starting at Job::UserDefinedError, and use those. For example:
errorCode | the error code |
|
protected |
Sets the error text.
It should be called when an error is encountered in the job, just before calling emitResult().
Provides extra information about the error that cannot be determined directly from the error code. For example, a URL or filename. This string is not normally translatable.
errorText | the error text |
|
slot |
Starts the job asynchronously.
This method will schedule doStart() to be executed in the next loop. This is done so this method returns as soon as possible.
When the job is finished, result() is emitted.