dataservice/dataqueue.h

48 lines
1.1 KiB
C++

#ifndef DATAQUEUE_H
#define DATAQUEUE_H
#include <QObject>
#include <QThread>
#include <QMutex>
#include <QWaitCondition>
#include <queue>
#include <iostream>
#include <nix.hpp>
#include <deque>
#include "dataloader.h"
#include "databuffer.h"
#include "arrayinfo.h"
#include "dataresult1d.h"
#include "datarequest.h"
class DataQueue : public QThread
{
Q_OBJECT
public:
DataQueue(QObject *parent = 0);
~DataQueue();
void run() override;
void stop();
DataResult1D getData(QString requestId);
signals:
void resultReady(QString requestId);
void dataReady(QString requestId, double min, double max);
public slots:
//void requestData(const nix::DataArray &array, const nix::NDSize &count, const nix::NDSize &offset, std::string &requestId);
void requestData(const nix::DataArray &array, DataBuffer *buffer, const ArrayInfo &info, qreal min, qreal max, std::string &requestId);
private:
std::deque<DataRequest> requestQueue;
std::map<std::string, DataResult1D> resultMap;
QMutex mutex;
DataLoader *loader;
bool stopped;
};
#endif // DATAQUEUE_H