feat: add auto support for async calls (#21)

This commit is contained in:
Khushboo-dev-cpp
2026-03-19 15:57:08 -04:00
committed by GitHub
parent a4bd66cd6e
commit 128180971c
5 changed files with 261 additions and 1 deletions
+54 -1
View File
@@ -99,6 +99,59 @@ QVariant LogosAPIClient::invokeRemoteMethod(const QString& objectName, const QSt
return invokeRemoteMethod(objectName, methodName, QVariantList() << arg1 << arg2 << arg3 << arg4 << arg5, timeout);
}
void LogosAPIClient::invokeRemoteMethodAsync(const QString& objectName, const QString& methodName,
const QVariantList& args,
std::function<void(QVariant)> callback,
Timeout timeout)
{
if (!callback) {
return;
}
QString token = getToken(objectName);
if (token.isEmpty() && objectName != "capability_module") {
LogosAPIConsumer* apiConsumer = new LogosAPIConsumer("capability_module", m_origin_module, m_token_manager, this);
QString capabilityToken = getToken("capability_module");
QVariant result = apiConsumer->invokeRemoteMethod(capabilityToken, "capability_module", "requestModule", QVariantList() << m_origin_module << objectName, timeout);
token = result.toString();
}
m_consumer->invokeRemoteMethodAsync(token, objectName, methodName, args, callback, timeout);
}
void LogosAPIClient::invokeRemoteMethodAsync(const QString& objectName, const QString& methodName,
const QVariant& arg, std::function<void(QVariant)> callback, Timeout timeout)
{
invokeRemoteMethodAsync(objectName, methodName, QVariantList() << arg, callback, timeout);
}
void LogosAPIClient::invokeRemoteMethodAsync(const QString& objectName, const QString& methodName,
const QVariant& arg1, const QVariant& arg2, std::function<void(QVariant)> callback, Timeout timeout)
{
invokeRemoteMethodAsync(objectName, methodName, QVariantList() << arg1 << arg2, callback, timeout);
}
void LogosAPIClient::invokeRemoteMethodAsync(const QString& objectName, const QString& methodName,
const QVariant& arg1, const QVariant& arg2, const QVariant& arg3,
std::function<void(QVariant)> callback, Timeout timeout)
{
invokeRemoteMethodAsync(objectName, methodName, QVariantList() << arg1 << arg2 << arg3, callback, timeout);
}
void LogosAPIClient::invokeRemoteMethodAsync(const QString& objectName, const QString& methodName,
const QVariant& arg1, const QVariant& arg2, const QVariant& arg3,
const QVariant& arg4,
std::function<void(QVariant)> callback, Timeout timeout)
{
invokeRemoteMethodAsync(objectName, methodName, QVariantList() << arg1 << arg2 << arg3 << arg4, callback, timeout);
}
void LogosAPIClient::invokeRemoteMethodAsync(const QString& objectName, const QString& methodName,
const QVariant& arg1, const QVariant& arg2, const QVariant& arg3,
const QVariant& arg4, const QVariant& arg5,
std::function<void(QVariant)> callback, Timeout timeout)
{
invokeRemoteMethodAsync(objectName, methodName, QVariantList() << arg1 << arg2 << arg3 << arg4 << arg5, callback, timeout);
}
void LogosAPIClient::onEvent(QObject* originObject, QObject* destinationObject, const QString& eventName, std::function<void(const QString&, const QVariantList&)> callback)
{
m_consumer->onEvent(originObject, destinationObject, eventName, callback);
@@ -167,4 +220,4 @@ QString LogosAPIClient::getToken(const QString& module_name)
// TODO: this is breaking here for core_manager
// return AUTH_TOKEN;
return "";
}
}