diff --git a/src/v2i-hub/CARMACloudPlugin/src/CARMACloudPlugin.cpp b/src/v2i-hub/CARMACloudPlugin/src/CARMACloudPlugin.cpp index 651384e09..d2110c575 100644 --- a/src/v2i-hub/CARMACloudPlugin/src/CARMACloudPlugin.cpp +++ b/src/v2i-hub/CARMACloudPlugin/src/CARMACloudPlugin.cpp @@ -463,25 +463,14 @@ int CARMACloudPlugin::StartWebService() QHostAddress address = QHostAddress(QString::fromStdString (webip)); quint16 port = static_cast(webport); - QSharedPointer handler(new OpenAPI::OAIApiRequestHandler()); - handler = QSharedPointer (new OpenAPI::OAIApiRequestHandler()); - - auto router = QSharedPointer::create(); - router->setUpRoutes(); - - QObject::connect(handler.data(), &OpenAPI::OAIApiRequestHandler::requestReceived, [&](QHttpEngine::Socket *socket) { - - CARMAResponseHandler(socket); - }); - - QObject::connect(handler.data(), &OpenAPI::OAIApiRequestHandler::requestReceived, [&](QHttpEngine::Socket *socket) { - - router->processRequest(socket); - }); - - QHttpEngine::Server server(handler.data()); - - if (!server.listen(address, port)) { + QHttpEngine::QObjectHandler apiHandler; + apiHandler.registerMethod(TCM_REPLY, [this](QHttpEngine::Socket *socket) + { + this->CARMAResponseHandler(socket); + socket->close(); }); + QHttpEngine::Server server(&apiHandler); + + if (!server.listen(address, port)) { qCritical("Unable to listen on the specified port."); return 1; } diff --git a/src/v2i-hub/CARMACloudPlugin/src/CARMACloudPlugin.h b/src/v2i-hub/CARMACloudPlugin/src/CARMACloudPlugin.h index 066e65756..9a9d85061 100644 --- a/src/v2i-hub/CARMACloudPlugin/src/CARMACloudPlugin.h +++ b/src/v2i-hub/CARMACloudPlugin/src/CARMACloudPlugin.h @@ -67,6 +67,7 @@ #include #endif #include +#include #include @@ -99,6 +100,7 @@ class CARMACloudPlugin: public PluginClient { uint16_t webport; std::string webip; uint16_t fetchtime; + void CARMAResponseHandler(QHttpEngine::Socket *socket); protected: void UpdateConfigSettings(); @@ -109,7 +111,6 @@ class CARMACloudPlugin: public PluginClient { void OnStateChange(IvpPluginState state); int StartWebService(); - void CARMAResponseHandler(QHttpEngine::Socket *socket); int CloudSend(const string& msg,const string& url, const string& base, const string& method); //Send HTTP request async void CloudSendAsync(const string& msg,const string& url, const string& base, const string& method); @@ -210,6 +211,8 @@ class CARMACloudPlugin: public PluginClient { const char *CONTENT_ENCODING_KEY = "Content-Encoding"; const char *CONTENT_ENCODING_VALUE = "gzip"; std::string list_tcm = "true"; + //API URL to accept TCM response + const QString TCM_REPLY="tcmreply"; }; std::mutex _cfgLock;