add async call to prepare context
This commit is contained in:
parent
93b7cc2457
commit
1592dcb739
@ -8,7 +8,7 @@ class AsyncCall {
|
|||||||
public:
|
public:
|
||||||
static void ensureRunInThreadPool(QThreadPool &threadPool, QRunnable *runnable)
|
static void ensureRunInThreadPool(QThreadPool &threadPool, QRunnable *runnable)
|
||||||
{
|
{
|
||||||
|
threadPool.start(runnable);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@ private:
|
|||||||
QString source;
|
QString source;
|
||||||
QString script;
|
QString script;
|
||||||
QString extra;
|
QString extra;
|
||||||
InterfaceDriver *driver;
|
InterfaceDriver *driver = NULL;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Context(QString contextId, QString source, QString extra);
|
Context(QString contextId, QString source, QString extra);
|
||||||
|
@ -33,7 +33,7 @@ public:
|
|||||||
int contextId = counter->fetchAndAddOrdered(1);
|
int contextId = counter->fetchAndAddOrdered(1);
|
||||||
Context *context = new Context(QString::number(contextId), source, extra);
|
Context *context = new Context(QString::number(contextId), source, extra);
|
||||||
contextMap->insert(QString::number(contextId), context);
|
contextMap->insert(QString::number(contextId), context);
|
||||||
context->driver->createContext(contextId, script);
|
context->getDriver()->createContext(QString::number(contextId), script, source);
|
||||||
return context;
|
return context;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!DOCTYPE QtCreatorProject>
|
<!DOCTYPE QtCreatorProject>
|
||||||
<!-- Written by QtCreator 4.11.1, 2021-01-28T10:15:57. -->
|
<!-- Written by QtCreator 4.11.1, 2021-01-28T17:40:51. -->
|
||||||
<qtcreator>
|
<qtcreator>
|
||||||
<data>
|
<data>
|
||||||
<variable>EnvironmentId</variable>
|
<variable>EnvironmentId</variable>
|
||||||
|
@ -10,7 +10,6 @@ class JSEngine : public QObject
|
|||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
private:
|
private:
|
||||||
QThreadPool mJSThreadPool;
|
|
||||||
InterfaceJSE *mJSE;
|
InterfaceJSE *mJSE;
|
||||||
|
|
||||||
void loadBuiltinJS(QString assetName);
|
void loadBuiltinJS(QString assetName);
|
||||||
@ -18,6 +17,8 @@ private:
|
|||||||
QString packageContextScript(QString contextId, QString content);
|
QString packageContextScript(QString contextId, QString content);
|
||||||
QString packageModuleScript(QString moduleName, QString content);
|
QString packageModuleScript(QString moduleName, QString content);
|
||||||
public:
|
public:
|
||||||
|
QThreadPool mJSThreadPool;
|
||||||
|
|
||||||
explicit JSEngine(QObject *parent = nullptr);
|
explicit JSEngine(QObject *parent = nullptr);
|
||||||
|
|
||||||
QJSValue invokeDoricMethod(QString method, QJSValueList arguments);
|
QJSValue invokeDoricMethod(QString method, QJSValueList arguments);
|
||||||
|
@ -4,6 +4,8 @@
|
|||||||
|
|
||||||
#include "engine/js_engine.h"
|
#include "engine/js_engine.h"
|
||||||
#include "async/async_result.h"
|
#include "async/async_result.h"
|
||||||
|
#include "context_manager.h"
|
||||||
|
#include "utils/utils.h"
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
@ -22,5 +24,8 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
JSEngine jsEngine;
|
JSEngine jsEngine;
|
||||||
|
|
||||||
|
QString script = Utils::readAssetFile("doric", "Snake.js");
|
||||||
|
ContextManager::getInstance()->createContext(script, "", "");
|
||||||
|
|
||||||
return app.exec();
|
return app.exec();
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
#include "native_driver.h"
|
#include "native_driver.h"
|
||||||
|
#include "async/async_call.h"
|
||||||
|
|
||||||
void NativeDriver::invokeContextEntityMethod(QString contextId, QString method, QList<QObject> args)
|
void NativeDriver::invokeContextEntityMethod(QString contextId, QString method, QList<QObject> args)
|
||||||
{
|
{
|
||||||
@ -12,7 +13,17 @@ void NativeDriver::invokeDoricMethod(QString method, QList<QObject> args)
|
|||||||
|
|
||||||
void NativeDriver::createContext(QString contextId, QString script, QString source)
|
void NativeDriver::createContext(QString contextId, QString script, QString source)
|
||||||
{
|
{
|
||||||
|
class Runnable: public QRunnable
|
||||||
|
{
|
||||||
|
void run() override
|
||||||
|
{
|
||||||
|
qDebug() << "123";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Runnable *runnable = new Runnable();
|
||||||
|
runnable->setAutoDelete(true);
|
||||||
|
|
||||||
|
AsyncCall::ensureRunInThreadPool(jsEngine.mJSThreadPool, runnable);
|
||||||
}
|
}
|
||||||
|
|
||||||
void NativeDriver::destroyContext(QString contextId)
|
void NativeDriver::destroyContext(QString contextId)
|
||||||
|
Reference in New Issue
Block a user