73 lines
1.0 KiB
C++
Executable File
73 lines
1.0 KiB
C++
Executable File
#pragma once
|
|
|
|
|
|
|
|
|
|
#include <LtsUtilsCore/ltsutilscore_export.h>
|
|
|
|
#include <QObject>
|
|
#include <QVariant>
|
|
|
|
#include <functional>
|
|
|
|
|
|
class QTimer;
|
|
|
|
|
|
namespace LtsUtils
|
|
{
|
|
typedef std::function<void(const QVariant &value)> RawResultFunction;
|
|
typedef const RawResultFunction &ResultFunction;
|
|
|
|
|
|
|
|
|
|
class LTSUTILSCORE_EXPORT Promise : public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
|
|
|
|
Promise(const std::function<void(ResultFunction resolve, ResultFunction reject)> &function, QObject *parent = nullptr);
|
|
|
|
|
|
|
|
void setFunction(const std::function<void(ResultFunction resolve, ResultFunction reject)> &function);
|
|
|
|
|
|
|
|
void resolve(const QVariant &value = QVariant());
|
|
|
|
|
|
|
|
void reject(const QVariant &value = QVariant());
|
|
|
|
|
|
|
|
void setTimeout(int interval);
|
|
|
|
|
|
|
|
Promise &resolved(ResultFunction resolveFn);
|
|
|
|
|
|
|
|
Promise &rejected(ResultFunction rejectFn);
|
|
|
|
|
|
private:
|
|
RawResultFunction m_resolveFn;
|
|
RawResultFunction m_rejectFn;
|
|
bool m_functionAlreadySet;
|
|
QTimer *m_timeout;
|
|
bool m_resultSet;
|
|
bool m_timeoutSet;
|
|
|
|
|
|
private slots:
|
|
void slotTimeout();
|
|
};
|
|
|
|
}
|