#ifndef ASYNC_RESULT_H #define ASYNC_RESULT_H #include #include #include "callback.h" template class AsyncResult { private: QVariant result; Callback *callback; public: AsyncResult() {} AsyncResult(R result) { this->result.setValue(result); } void setResult(R result) { this->result.setValue(result); if (callback != nullptr) { this->callback->onResult(result); this->callback->onFinish(); } } void setError(QException *exception) { this->result->setValue(exception); if (callback != nullptr) { this->callback->onError(exception); this->callback->onFinish(); } } bool hasResult() { qDebug() << result.typeName(); return !QString(result.typeName()).isEmpty(); } R *getResult() { return static_cast(result.data()); } }; #endif // ASYNC_RESULT_H