diff --git a/src/dsl/word/Network.hpp b/src/dsl/word/Network.hpp index 113d5fda..0b9bf5b8 100644 --- a/src/dsl/word/Network.hpp +++ b/src/dsl/word/Network.hpp @@ -91,8 +91,8 @@ namespace dsl { template static std::tuple, NetworkData> get(threading::ReactionTask& /*task*/) { - auto* data = store::ThreadStore>::value; - auto* source = store::ThreadStore::value; + const auto* data = store::ThreadStore>::value; + const auto* source = store::ThreadStore::value; if (data && source) { diff --git a/src/extension/NetworkController.cpp b/src/extension/NetworkController.cpp index 250a6f84..56158ee5 100644 --- a/src/extension/NetworkController.cpp +++ b/src/extension/NetworkController.cpp @@ -57,14 +57,10 @@ namespace extension { const bool& reliable, std::vector&& payload) { // Construct our NetworkSource information - dsl::word::NetworkSource src{remote.name, remote.target, reliable}; + const dsl::word::NetworkSource src{remote.name, remote.target, reliable}; // Move the payload in as we are stealing it - std::vector p(std::move(payload)); - - // Store in our thread local cache - dsl::store::ThreadStore>::value = &p; - dsl::store::ThreadStore::value = &src; + const std::vector p(std::move(payload)); /* Mutex Scope */ { // Lock our reaction mutex @@ -75,13 +71,17 @@ namespace extension { // Execute on our interested reactions for (auto it = rs.first; it != rs.second; ++it) { + // Store in our thread local cache + dsl::store::ThreadStore>::value = &p; + dsl::store::ThreadStore::value = &src; + powerplant.submit(it->second->get_task()); } - } - // Clear our cache - dsl::store::ThreadStore>::value = nullptr; - dsl::store::ThreadStore::value = nullptr; + // Clear our cache + dsl::store::ThreadStore>::value = nullptr; + dsl::store::ThreadStore::value = nullptr; + } }); // Set our join callback