WaterLevelSensor/requestworker.h

50 lines
1.2 KiB
C
Raw Normal View History

2026-08-04 21:31:40 +05:30
#ifndef REQUESTWORKER_H
#define REQUESTWORKER_H
#include <QObject>
#include <QQmlEngine>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QTimer>
#include <QThread>
#include <chrono>
class RequestWorker : public QObject
{
Q_OBJECT
QML_ELEMENT
Q_PROPERTY(QString status READ status WRITE setStatus NOTIFY statusChanged FINAL)
QNetworkAccessManager *manager = nullptr;
QTimer *timer = nullptr;
QString url;
int interval;
float prev_distance = 0;
int max_height = 0;
int min_height = 0;
bool stop_timer = false;
int reply_number = 0;
std::chrono::time_point<std::chrono::high_resolution_clock> prev_time;
public:
explicit RequestWorker(QObject *parent = nullptr);
QString status() const;
void setStatus(const QString &newStatus);
signals:
void requestFailed();
void networkReply(int distance, float rate_of_fill, int expected_to_fill);
2026-08-04 21:31:40 +05:30
void statusChanged();
public slots:
void setConfig(QJsonObject config);
void start();
void stop();
private slots:
void makeRequest();
void requestFinished(QNetworkReply *rep);
private:
QString m_status;
};
#endif // REQUESTWORKER_H