Rate limit conversion from script

This commit is contained in:
2024-03-26 14:54:19 +01:00
parent 174134a9ee
commit c3588e1c36
4 changed files with 15 additions and 5 deletions
+6 -3
View File
@@ -520,11 +520,12 @@ bool loadImage(const QString &path, ImageInfoData &info, std::shared_ptr<RawImag
return ret;
}
ConvertRunable::ConvertRunable(const QString &in, const QString &out, const QString &format, const ConvertParams &params) :
ConvertRunable::ConvertRunable(const QString &in, const QString &out, const QString &format, const ConvertParams &params, QSemaphore *semaphore) :
m_infile(in),
m_outfile(out),
m_format(format),
m_params(params)
m_params(params),
m_semaphore(semaphore)
{
}
@@ -602,7 +603,9 @@ void writeFITSImage(fitsfile *fw, std::shared_ptr<RawImage> rawimage, ImageInfoD
void ConvertRunable::run()
{
qDebug() << m_infile << m_outfile;
QSemaphoreReleaser release;
if(m_semaphore)release = QSemaphoreReleaser(m_semaphore);
ImageInfoData imageinfo;
std::shared_ptr<RawImage> rawimage;
loadImage(m_infile, imageinfo, rawimage);
+3 -1
View File
@@ -3,6 +3,7 @@
#include <QRunnable>
#include <QString>
#include <QSemaphore>
#include "imageinfo.h"
class RawImage;
@@ -35,13 +36,14 @@ public:
ConvertParams(){}
ConvertParams(const QVariantMap &map);
};
ConvertRunable(const QString &in, const QString &out, const QString &format, const ConvertParams &params = ConvertParams());
ConvertRunable(const QString &in, const QString &out, const QString &format, const ConvertParams &params = ConvertParams(), QSemaphore *semaphore = nullptr);
void run() override;
private:
QString m_infile;
QString m_outfile;
QString m_format;
ConvertParams m_params;
QSemaphore *m_semaphore;
};
#endif // LOADRUNABLE_H
+4 -1
View File
@@ -17,6 +17,7 @@ ScriptEngine::ScriptEngine(QObject *parent) : QObject(parent)
QJSValue engine = _jsEngine->newQObject(this);
_jsEngine->globalObject().setProperty("engine", engine);
_database->init(QLatin1String("scriptengine"));
_semaphore.release(_pool->maxThreadCount());
}
void ScriptEngine::setParams(const QString &scriptPath, const QStringList &paths, const QString &outputDir)
@@ -79,7 +80,8 @@ bool ScriptEngine::convert(File *file, QString &outpath, QString format, QVarian
info.setFile(path);
//qDebug() << info.absolutePath() + "/" + info.completeBaseName() + "." + format.toLower();
_pool->start(new ConvertRunable(file->absoluteFilePath(), info.absolutePath() + "/" + info.completeBaseName() + "." + format.toLower(), format, params));
_semaphore.acquire();
_pool->start(new ConvertRunable(file->absoluteFilePath(), info.absolutePath() + "/" + info.completeBaseName() + "." + format.toLower(), format, params, &_semaphore));
return true;
}
@@ -109,6 +111,7 @@ void ScriptEngine::run()
scriptFile.close();
QJSValue result = _jsEngine->evaluate(contents, _scriptPath);
qDebug() << result.isError() << result.toString();
_pool->waitForDone();
if(result.isError())
{
QString error = result.property("name").toString() + " on line " + result.property("lineNumber").toString() + " : " + result.toString();
+2
View File
@@ -6,6 +6,7 @@
#include <QFileInfo>
#include <QThread>
#include <QThreadPool>
#include <QSemaphore>
#include "database.h"
namespace Script
@@ -19,6 +20,7 @@ class ScriptEngine : public QObject
QJSEngine *_jsEngine;
Database *_database;
QThreadPool *_pool;
QSemaphore _semaphore;
QString _scriptPath;
QString _outputDir;
QStringList _paths;