From 38bceba5ecbbef047d0be09c88ba8672f0e524f7 Mon Sep 17 00:00:00 2001 From: fourtf Date: Sun, 25 Aug 2019 21:25:31 +0200 Subject: [PATCH] improved browser extension --- src/BrowserExtension.cpp | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/src/BrowserExtension.cpp b/src/BrowserExtension.cpp index c11835cf5..de869e2d6 100644 --- a/src/BrowserExtension.cpp +++ b/src/BrowserExtension.cpp @@ -27,13 +27,29 @@ namespace { void runLoop(NativeMessagingClient &client) { + auto received_message = std::make_shared(true); + + auto thread = std::thread([=]() { + while (true) + { + using namespace std::chrono_literals; + if (!received_message->exchange(false)) + { + _Exit(1); + } + std::this_thread::sleep_for(5s); + } + }); + while (true) { char size_c[4]; std::cin.read(size_c, 4); if (std::cin.eof()) + { break; + } auto size = *reinterpret_cast(size_c); @@ -54,8 +70,18 @@ namespace { std::cin.read(buffer.get(), size); *(buffer.get() + size) = '\0'; - client.sendMessage(QByteArray::fromRawData( - buffer.get(), static_cast(size))); + auto data = QByteArray::fromRawData(buffer.get(), + static_cast(size)); + auto doc = QJsonDocument(); + + if (doc.object().value("type") == "nm_pong") + { + received_message->store(true); + } + + received_message->store(true); + + client.sendMessage(data); } } } // namespace