diff options
author | Raquel Medina <raquel.medina@konsulko.com> | 2020-05-04 10:57:37 +0200 |
---|---|---|
committer | Raquel Medina <raquel.medina@konsulko.com> | 2020-05-04 11:08:06 +0200 |
commit | be7f78b632635c51089dc60f5bf178cc5db60350 (patch) | |
tree | 37b4d81ad2be449a813491d73c442284a1ac220f /messageengine.h | |
parent | c34c355242319fcb5fb2385040a4d7f819f0afc6 (diff) |
share MessageEngine instance
Share MessageEngine instance among clients in the
same process using a common socket (same url).
- add MessageEngineFactory class;
- extend std::unordered_map<> to use QString as
key;
- use std::shared_ptr<MessageEngine> to share
ownership among MessageEngineFactory and the
engine clients;
- force MessagEngine parent object null to avoid
life cycle dependency on a parent;
- protect insertions & deletions in m_calls map;
Also, not directly related but as part of testing
these changes: cleanup on voice to remove
superflous model sorting (there's just one voice
model for alexa voice agent).
Bug-AGL: SPEC-3112
Signed-off-by: Raquel Medina <raquel.medina@konsulko.com>
Change-Id: Ie2304453dc37723dac13d256286eeb85f84ca2ab
Diffstat (limited to 'messageengine.h')
-rw-r--r-- | messageengine.h | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/messageengine.h b/messageengine.h index b682ec5..4639c97 100644 --- a/messageengine.h +++ b/messageengine.h @@ -19,6 +19,7 @@ #include <memory> #include <atomic> +#include <mutex> #include <QUrl> #include <QWebSocket> @@ -28,7 +29,7 @@ class MessageEngine : public QObject { Q_OBJECT public: - explicit MessageEngine(const QUrl &url, QObject *parent = Q_NULLPTR); + explicit MessageEngine(const QUrl &url); bool sendMessage(std::unique_ptr<Message> message); Q_SIGNALS: @@ -43,9 +44,11 @@ class MessageEngine : public QObject private: QWebSocket m_websocket; + std::mutex m_mutex; QMap<qint32, QByteArray> m_calls; QUrl m_url; std::atomic<unsigned int> m_callid; + friend class MessageEngineFactory; }; #endif // MESSAGEENGINE_H |