summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRainer Keller <Rainer.Keller@qt.io>2018-11-15 10:00:46 +0100
committerMaurice Kalinowski <maurice.kalinowski@qt.io>2019-01-08 09:46:43 +0000
commiteccc4e4ec11159a921e217a465cc72704ebe49d8 (patch)
tree1c5e3b66d06912cd27eb3f04c100bf7c58aca260
parent94e9eaf7a6a449e4a8417c5d6c6b45e750795921 (diff)
Add parameter for custom backend specific settings
Key value pairs are used to pass backend specific settings to the backend. Change-Id: I9d31d001010b9b52e93b5c471954c5673a6fd5fe Reviewed-by: Frank Meerkoetter <frank.meerkoetter@basyskom.com>
-rw-r--r--src/opcua/core/qopcuaplugin.h2
-rw-r--r--src/opcua/core/qopcuaprovider.cpp7
-rw-r--r--src/opcua/core/qopcuaprovider.h2
-rw-r--r--src/plugins/opcua/open62541/qopen62541plugin.cpp3
-rw-r--r--src/plugins/opcua/open62541/qopen62541plugin.h2
-rw-r--r--src/plugins/opcua/uacpp/quacppclient.cpp4
-rw-r--r--src/plugins/opcua/uacpp/quacppclient.h2
-rw-r--r--src/plugins/opcua/uacpp/quacppplugin.cpp4
-rw-r--r--src/plugins/opcua/uacpp/quacppplugin.h2
9 files changed, 17 insertions, 11 deletions
diff --git a/src/opcua/core/qopcuaplugin.h b/src/opcua/core/qopcuaplugin.h
index fac78aa..9159e35 100644
--- a/src/opcua/core/qopcuaplugin.h
+++ b/src/opcua/core/qopcuaplugin.h
@@ -54,7 +54,7 @@ public:
explicit QOpcUaPlugin(QObject *parent = nullptr);
~QOpcUaPlugin() override;
- virtual QOpcUaClient *createClient() = 0;
+ virtual QOpcUaClient *createClient(const QVariantMap &backendProperties) = 0;
};
Q_DECLARE_INTERFACE(QOpcUaPlugin, QOpcUaProviderFactory_iid)
diff --git a/src/opcua/core/qopcuaprovider.cpp b/src/opcua/core/qopcuaprovider.cpp
index 6f19a0d..acb8b16 100644
--- a/src/opcua/core/qopcuaprovider.cpp
+++ b/src/opcua/core/qopcuaprovider.cpp
@@ -196,8 +196,11 @@ static QOpcUaPlugin *loadPlugin(const QString &key)
The user is responsible for deleting the returned \l QOpcUaClient object
when it is no longer needed.
+
+ The optional argument \c backendProperties can be used to pass custom backend specific settings as key value pairs.
+ Those settings are specific to the backend being instantiated.
*/
-QOpcUaClient *QOpcUaProvider::createClient(const QString &backend)
+QOpcUaClient *QOpcUaProvider::createClient(const QString &backend, const QVariantMap &backendProperties)
{
QOpcUaPlugin *plugin;
auto it = m_plugins.find(backend);
@@ -213,7 +216,7 @@ QOpcUaClient *QOpcUaProvider::createClient(const QString &backend)
else {
plugin = it.value();
}
- return plugin->createClient();
+ return plugin->createClient(backendProperties);
}
/*!
diff --git a/src/opcua/core/qopcuaprovider.h b/src/opcua/core/qopcuaprovider.h
index eee66c3..fac70d5 100644
--- a/src/opcua/core/qopcuaprovider.h
+++ b/src/opcua/core/qopcuaprovider.h
@@ -58,7 +58,7 @@ public:
explicit QOpcUaProvider(QObject *parent = nullptr);
~QOpcUaProvider() override;
- Q_INVOKABLE QOpcUaClient *createClient(const QString &backend);
+ Q_INVOKABLE QOpcUaClient *createClient(const QString &backend, const QVariantMap &backendProperties = QVariantMap());
private:
QHash<QString, QOpcUaPlugin *> m_plugins;
diff --git a/src/plugins/opcua/open62541/qopen62541plugin.cpp b/src/plugins/opcua/open62541/qopen62541plugin.cpp
index 3366417..7bdcb6e 100644
--- a/src/plugins/opcua/open62541/qopen62541plugin.cpp
+++ b/src/plugins/opcua/open62541/qopen62541plugin.cpp
@@ -63,8 +63,9 @@ QOpen62541Plugin::~QOpen62541Plugin()
{
}
-QOpcUaClient *QOpen62541Plugin::createClient()
+QOpcUaClient *QOpen62541Plugin::createClient(const QVariantMap &backendProperties)
{
+ Q_UNUSED(backendProperties)
return new QOpcUaClient(new QOpen62541Client);
}
diff --git a/src/plugins/opcua/open62541/qopen62541plugin.h b/src/plugins/opcua/open62541/qopen62541plugin.h
index d65dbea..6987b1b 100644
--- a/src/plugins/opcua/open62541/qopen62541plugin.h
+++ b/src/plugins/opcua/open62541/qopen62541plugin.h
@@ -53,7 +53,7 @@ public:
explicit QOpen62541Plugin(QObject *parent = nullptr);
~QOpen62541Plugin() override;
- QOpcUaClient *createClient() override;
+ QOpcUaClient *createClient(const QVariantMap &backendProperties) override;
};
QT_END_NAMESPACE
diff --git a/src/plugins/opcua/uacpp/quacppclient.cpp b/src/plugins/opcua/uacpp/quacppclient.cpp
index bd6d784..2fb0922 100644
--- a/src/plugins/opcua/uacpp/quacppclient.cpp
+++ b/src/plugins/opcua/uacpp/quacppclient.cpp
@@ -36,10 +36,12 @@ QT_BEGIN_NAMESPACE
Q_DECLARE_LOGGING_CATEGORY(QT_OPCUA_PLUGINS_UACPP)
-QUACppClient::QUACppClient()
+QUACppClient::QUACppClient(const QVariantMap &backendProperties)
: QOpcUaClientImpl()
, m_backend(new UACppAsyncBackend(this))
{
+ Q_UNUSED(backendProperties);
+
m_thread = new QThread();
connectBackendWithClient(m_backend);
m_backend->moveToThread(m_thread);
diff --git a/src/plugins/opcua/uacpp/quacppclient.h b/src/plugins/opcua/uacpp/quacppclient.h
index af16cd2..7c79970 100644
--- a/src/plugins/opcua/uacpp/quacppclient.h
+++ b/src/plugins/opcua/uacpp/quacppclient.h
@@ -35,7 +35,7 @@ class QUACppClient : public QOpcUaClientImpl
Q_OBJECT
public:
- explicit QUACppClient();
+ explicit QUACppClient(const QVariantMap &backendProperties);
~QUACppClient();
void connectToEndpoint(const QUrl &url) override;
diff --git a/src/plugins/opcua/uacpp/quacppplugin.cpp b/src/plugins/opcua/uacpp/quacppplugin.cpp
index 8e33184..77d2709 100644
--- a/src/plugins/opcua/uacpp/quacppplugin.cpp
+++ b/src/plugins/opcua/uacpp/quacppplugin.cpp
@@ -38,9 +38,9 @@ QUACppPlugin::~QUACppPlugin()
{
}
-QOpcUaClient *QUACppPlugin::createClient()
+QOpcUaClient *QUACppPlugin::createClient(const QVariantMap &backendProperties)
{
- return new QOpcUaClient(new QUACppClient());
+ return new QOpcUaClient(new QUACppClient(backendProperties));
}
QT_END_NAMESPACE
diff --git a/src/plugins/opcua/uacpp/quacppplugin.h b/src/plugins/opcua/uacpp/quacppplugin.h
index c7a8bf2..801f12c 100644
--- a/src/plugins/opcua/uacpp/quacppplugin.h
+++ b/src/plugins/opcua/uacpp/quacppplugin.h
@@ -39,7 +39,7 @@ public:
explicit QUACppPlugin(QObject *parent = 0);
~QUACppPlugin() override;
- QOpcUaClient *createClient() override;
+ QOpcUaClient *createClient(const QVariantMap &backendProperties) override;
private:
};