From e4f86cce7abbeee74fc088edc9da684031525c03 Mon Sep 17 00:00:00 2001 From: Marcel Krueger <krueger@vr.rwth-aachen.de> Date: Wed, 22 Mar 2023 17:06:46 +0100 Subject: [PATCH] chore(access-node): rename and restructure files --- access-node/access_node/CMakeLists.txt | 85 +++++----- .../include/insite/arbor/arbor_endpoints.h | 2 +- .../access_node/include/insite/config.h | 3 +- .../insite/nest/endpoints.h} | 12 +- .../insite/{nest_handler.h => nest/handler.h} | 0 .../{jsonStrings.h => nest/json_strings.h} | 0 .../{nestKernelStatus.h => kernel_status.h} | 0 .../nest/{nestMultimeter.h => multimeter.h} | 5 +- ...eterContainer.h => multimeter_container.h} | 0 .../nest/{nestNode.h => nodecollections.h} | 0 .../{spike.h => nest/spike_container.h} | 0 ...{nestSpikeRecorders.h => spikerecorders.h} | 35 ++-- .../insite/nest/{nestSpikes.h => spikes.h} | 4 +- .../insite/nest/{nestVersion.h => version.h} | 0 .../access_node/include/insite/opcodes.h | 5 +- .../access_node/include/insite/params.h.bak | 153 ------------------ ...StringBuilder.h => query_string_builder.h} | 0 .../include/insite/spikedetector.h | 4 +- .../{tvb_http_endpoints.h => tvb/endpoints.h} | 43 ++++- .../insite/{tvb_handler.h => tvb/handler.h} | 9 +- .../insite/{tvbMonitor.h => tvb/monitor.h} | 42 +++-- ...utilityFunctions.h => utility_functions.h} | 6 +- .../include/insite/websocket_sender.h | 48 +++--- access-node/access_node/params.cpp.bak | 98 ----------- .../{ => src}/arbor/arbor_strings.cpp | 0 .../{ => src}/arbor/cell_endpoints.cpp | 2 +- .../{ => src}/arbor/parameters.cpp | 0 .../{ => src}/arbor/probe_endpoints.cpp | 2 +- .../{ => src}/arbor/spike_endpoints.cpp | 2 +- access-node/access_node/{ => src}/config.cpp | 0 .../access_node/{ => src}/insite_defines.cpp | 0 access-node/access_node/{ => src}/main.cpp | 17 +- .../nest/handler.cpp} | 20 +-- .../nest/kernel_status.cpp} | 34 ++-- .../nest/multimeter.cpp} | 16 +- .../nest/multimeter_container.cpp} | 4 +- .../nest/nodecollections.cpp} | 102 ++++++------ .../nest/spike_container.cpp} | 4 +- .../nest/spikerecorders.cpp} | 14 +- .../nestSpikes.cpp => src/nest/spikes.cpp} | 13 +- .../nestVersion.cpp => src/nest/version.cpp} | 24 +-- .../utility_functions.cpp} | 13 +- .../{ => src}/websocket_sender.cpp | 0 .../{ => src}/websocket_server.cpp | 4 +- .../{tvb_handler.cpp => tvb/handler.cpp} | 31 +++- access-node/access_node/tvb/monitor.cpp | 1 + access-node/access_node/tvbMonitor.cpp | 2 - 47 files changed, 340 insertions(+), 519 deletions(-) rename access-node/access_node/{nest/nest_endpoints.h => include/insite/nest/endpoints.h} (95%) rename access-node/access_node/include/insite/{nest_handler.h => nest/handler.h} (100%) rename access-node/access_node/include/insite/{jsonStrings.h => nest/json_strings.h} (100%) rename access-node/access_node/include/insite/nest/{nestKernelStatus.h => kernel_status.h} (100%) rename access-node/access_node/include/insite/nest/{nestMultimeter.h => multimeter.h} (94%) rename access-node/access_node/include/insite/nest/{nestMultimeterContainer.h => multimeter_container.h} (100%) rename access-node/access_node/include/insite/nest/{nestNode.h => nodecollections.h} (100%) rename access-node/access_node/include/insite/{spike.h => nest/spike_container.h} (100%) rename access-node/access_node/include/insite/nest/{nestSpikeRecorders.h => spikerecorders.h} (85%) rename access-node/access_node/include/insite/nest/{nestSpikes.h => spikes.h} (96%) rename access-node/access_node/include/insite/nest/{nestVersion.h => version.h} (100%) delete mode 100644 access-node/access_node/include/insite/params.h.bak rename access-node/access_node/include/insite/{queryStringBuilder.h => query_string_builder.h} (100%) rename access-node/access_node/include/insite/{tvb_http_endpoints.h => tvb/endpoints.h} (61%) rename access-node/access_node/include/insite/{tvb_handler.h => tvb/handler.h} (84%) rename access-node/access_node/include/insite/{tvbMonitor.h => tvb/monitor.h} (79%) rename access-node/access_node/include/insite/{utilityFunctions.h => utility_functions.h} (95%) delete mode 100644 access-node/access_node/params.cpp.bak rename access-node/access_node/{ => src}/arbor/arbor_strings.cpp (100%) rename access-node/access_node/{ => src}/arbor/cell_endpoints.cpp (97%) rename access-node/access_node/{ => src}/arbor/parameters.cpp (100%) rename access-node/access_node/{ => src}/arbor/probe_endpoints.cpp (98%) rename access-node/access_node/{ => src}/arbor/spike_endpoints.cpp (96%) rename access-node/access_node/{ => src}/config.cpp (100%) rename access-node/access_node/{ => src}/insite_defines.cpp (100%) rename access-node/access_node/{ => src}/main.cpp (83%) rename access-node/access_node/{nest_handler.cpp => src/nest/handler.cpp} (94%) rename access-node/access_node/{nest/kernelStatus.cpp => src/nest/kernel_status.cpp} (84%) rename access-node/access_node/{nest/nestMultimeter.cpp => src/nest/multimeter.cpp} (96%) rename access-node/access_node/{nest/nestMultimeterContainer.cpp => src/nest/multimeter_container.cpp} (98%) rename access-node/access_node/{nest/nestNode.cpp => src/nest/nodecollections.cpp} (81%) rename access-node/access_node/{nest/spike.cpp => src/nest/spike_container.cpp} (99%) rename access-node/access_node/{nest/spikedetector.cpp => src/nest/spikerecorders.cpp} (80%) rename access-node/access_node/{nest/nestSpikes.cpp => src/nest/spikes.cpp} (92%) rename access-node/access_node/{nest/nestVersion.cpp => src/nest/version.cpp} (92%) rename access-node/access_node/{utilityFunctions.cpp => src/utility_functions.cpp} (96%) rename access-node/access_node/{ => src}/websocket_sender.cpp (100%) rename access-node/access_node/{ => src}/websocket_server.cpp (99%) rename access-node/access_node/{tvb_handler.cpp => tvb/handler.cpp} (82%) create mode 100644 access-node/access_node/tvb/monitor.cpp delete mode 100644 access-node/access_node/tvbMonitor.cpp diff --git a/access-node/access_node/CMakeLists.txt b/access-node/access_node/CMakeLists.txt index 2ef84458..52a60790 100644 --- a/access-node/access_node/CMakeLists.txt +++ b/access-node/access_node/CMakeLists.txt @@ -51,49 +51,58 @@ include_directories("extern/pdqsort") add_executable( insite-access-node - main.cpp - include/insite/query_params.h - include/insite/spike_util.h + src/main.cpp + + ${CMAKE_CURRENT_BINARY_DIR}/include/schema_generated.h include/insite/circular_timeseries.h - include/insite/config.h config.cpp - # include/insite/jsonParameters.h jsonParameters.cpp - include/insite/jsonStrings.h - include/insite/nest/nestKernelStatus.h nest/kernelStatus.cpp - include/insite/nest/nestMultimeter.h nest/nestMultimeter.cpp - include/insite/nest/nestMultimeterContainer.h nest/nestMultimeterContainer.cpp - include/insite/nest/nestNode.h nest/nestNode.cpp - include/insite/nest/nestSpikeDetectors.h - include/insite/nest/nestSpikeRecorders.h - include/insite/nest/nestSpikes.h nest/nestSpikes.cpp - include/insite/nest/nestVersion.h nest/nestVersion.cpp - include/insite/arbor/cell_endpoints.h arbor/cell_endpoints.cpp - include/insite/arbor/probe_endpoints.h arbor/probe_endpoints.cpp - include/insite/arbor/spike_endpoints.h arbor/spike_endpoints.cpp - include/insite/arbor/parameters.h arbor/parameters.cpp - include/insite/arbor/arbor_strings.h arbor/arbor_strings.cpp + include/insite/config.h src/config.cpp include/insite/opcodes.h - # include/insite/params.h params.cpp - include/insite/queryStringBuilder.h + include/insite/query_params.h + include/insite/query_string_builder.h include/insite/resource_flags.h - include/insite/spike.h nest/spike.cpp - include/insite/spikedetector.h nest/spikedetector.cpp - include/insite/tvb_http_endpoints.h - include/insite/tvbMonitor.h tvbMonitor.cpp - include/insite/tvb_handler.h tvb_handler.cpp - include/insite/nest_handler.h nest_handler.cpp - include/insite/utilityFunctions.h utilityFunctions.cpp - include/insite/websocket_sender.h websocket_sender.cpp - include/insite/websocket_server.h websocket_server.cpp - ${CMAKE_CURRENT_BINARY_DIR}/include/schema_generated.h + include/insite/spike_util.h + include/insite/utility_functions.h src/utility_functions.cpp + include/insite/websocket_sender.h src/websocket_sender.cpp + include/insite/websocket_server.h src/websocket_server.cpp + + include/insite/nest/endpoints.h + include/insite/nest/handler.h src/nest/handler.cpp + include/insite/nest/json_strings.h + include/insite/nest/kernel_status.h src/nest/kernel_status.cpp + include/insite/nest/multimeter.h src/nest/multimeter.cpp + include/insite/nest/multimeter_container.h src/nest/multimeter_container.cpp + include/insite/nest/nodecollections.h src/nest/nodecollections.cpp + include/insite/nest/spike_container.h src/nest/spike_container.cpp + include/insite/nest/spikerecorders.h src/nest/spikerecorders.cpp + include/insite/nest/spikes.h src/nest/spikes.cpp + include/insite/nest/version.h src/nest/version.cpp + + include/insite/arbor/arbor_strings.h src/arbor/arbor_strings.cpp + include/insite/arbor/cell_endpoints.h src/arbor/cell_endpoints.cpp + include/insite/arbor/parameters.h src/arbor/parameters.cpp + include/insite/arbor/probe_endpoints.h src/arbor/probe_endpoints.cpp + include/insite/arbor/spike_endpoints.h src/arbor/spike_endpoints.cpp + + include/insite/tvb/endpoints.h + include/insite/tvb/handler.h tvb/handler.cpp + include/insite/tvb/monitor.h tvb/monitor.cpp + ) -target_include_directories(insite-access-node PRIVATE include/insite) -target_include_directories(insite-access-node PRIVATE ${CMAKE_BINARY_DIR}/include) set_property( TARGET insite-access-node PROPERTY CXX_STANDARD 17 ) +target_include_directories( + insite-access-node + PRIVATE + include/insite + ${CMAKE_BINARY_DIR}/include + ${CMAKE_BINARY_DIR}/_deps/rapidjson-src/include + ${CMAKE_BINARY_DIR}/_deps/websocketpp-src +) + target_link_libraries( insite-access-node PRIVATE @@ -108,13 +117,3 @@ target_link_libraries( optional asio::asio ) - -target_include_directories( - insite-access-node - PRIVATE - ${CMAKE_BINARY_DIR}/_deps/rapidjson-src/include - ${CMAKE_BINARY_DIR}/_deps/websocketpp-src - # ${asio_INCLUDE_DIR}/include -) - -message("${ASIO_INCLUDE_DIR}") diff --git a/access-node/access_node/include/insite/arbor/arbor_endpoints.h b/access-node/access_node/include/insite/arbor/arbor_endpoints.h index be694106..e1a7f159 100644 --- a/access-node/access_node/include/insite/arbor/arbor_endpoints.h +++ b/access-node/access_node/include/insite/arbor/arbor_endpoints.h @@ -6,7 +6,7 @@ #include "config.h" #include "crow/app.h" #include "crow/middlewares/cors.h" -#include "utilityFunctions.h" +#include <utility_functions.h> namespace insite { class ArborHttpEndpoint { diff --git a/access-node/access_node/include/insite/config.h b/access-node/access_node/include/insite/config.h index ab818f5c..e741ccf3 100644 --- a/access-node/access_node/include/insite/config.h +++ b/access-node/access_node/include/insite/config.h @@ -1,6 +1,5 @@ #pragma once - -#define SPDLOG_ACTIVE_LEVEL SPDLOG_LEVEL_TRACE +#include <insite_defines.h> #include <spdlog/fmt/fmt.h> #include <string> diff --git a/access-node/access_node/nest/nest_endpoints.h b/access-node/access_node/include/insite/nest/endpoints.h similarity index 95% rename from access-node/access_node/nest/nest_endpoints.h rename to access-node/access_node/include/insite/nest/endpoints.h index feb70256..65562ffd 100644 --- a/access-node/access_node/nest/nest_endpoints.h +++ b/access-node/access_node/include/insite/nest/endpoints.h @@ -4,12 +4,12 @@ #include "crow/http_request.h" #include "crow/middlewares/cors.h" #include "tl/optional.hpp" -#include <nest/nestKernelStatus.h> -#include <nest/nestMultimeter.h> -#include <nest/nestNode.h> -#include <nest/nestSpikeRecorders.h> -#include <nest/nestSpikes.h> -#include <nest/nestVersion.h> +#include <nest/kernel_status.h> +#include <nest/multimeter.h> +#include <nest/nodecollections.h> +#include <nest/spikerecorders.h> +#include <nest/spikes.h> +#include <nest/version.h> #define CROW_ROUTE_LAMBA(APP, ENDPOINT, FUNCTION) \ CROW_ROUTE(APP, ENDPOINT) \ diff --git a/access-node/access_node/include/insite/nest_handler.h b/access-node/access_node/include/insite/nest/handler.h similarity index 100% rename from access-node/access_node/include/insite/nest_handler.h rename to access-node/access_node/include/insite/nest/handler.h diff --git a/access-node/access_node/include/insite/jsonStrings.h b/access-node/access_node/include/insite/nest/json_strings.h similarity index 100% rename from access-node/access_node/include/insite/jsonStrings.h rename to access-node/access_node/include/insite/nest/json_strings.h diff --git a/access-node/access_node/include/insite/nest/nestKernelStatus.h b/access-node/access_node/include/insite/nest/kernel_status.h similarity index 100% rename from access-node/access_node/include/insite/nest/nestKernelStatus.h rename to access-node/access_node/include/insite/nest/kernel_status.h diff --git a/access-node/access_node/include/insite/nest/nestMultimeter.h b/access-node/access_node/include/insite/nest/multimeter.h similarity index 94% rename from access-node/access_node/include/insite/nest/nestMultimeter.h rename to access-node/access_node/include/insite/nest/multimeter.h index 48e249e1..fc7a605f 100644 --- a/access-node/access_node/include/insite/nest/nestMultimeter.h +++ b/access-node/access_node/include/insite/nest/multimeter.h @@ -2,9 +2,8 @@ #include <cpr/cpr.h> #include <cstdint> #include <iterator> -#include <nest/nestMultimeterContainer.h> +#include <nest/multimeter_container.h> #include <optional> -// #include <params.h> #include <rapidjson/document.h> #include <rapidjson/stringbuffer.h> #include <rapidjson/writer.h> @@ -12,7 +11,7 @@ #include <spdlog/fmt/ranges.h> #include <spdlog/spdlog.h> #include <unordered_set> -#include <utilityFunctions.h> +#include <utility_functions.h> #include <vector> namespace insite { diff --git a/access-node/access_node/include/insite/nest/nestMultimeterContainer.h b/access-node/access_node/include/insite/nest/multimeter_container.h similarity index 100% rename from access-node/access_node/include/insite/nest/nestMultimeterContainer.h rename to access-node/access_node/include/insite/nest/multimeter_container.h diff --git a/access-node/access_node/include/insite/nest/nestNode.h b/access-node/access_node/include/insite/nest/nodecollections.h similarity index 100% rename from access-node/access_node/include/insite/nest/nestNode.h rename to access-node/access_node/include/insite/nest/nodecollections.h diff --git a/access-node/access_node/include/insite/spike.h b/access-node/access_node/include/insite/nest/spike_container.h similarity index 100% rename from access-node/access_node/include/insite/spike.h rename to access-node/access_node/include/insite/nest/spike_container.h diff --git a/access-node/access_node/include/insite/nest/nestSpikeRecorders.h b/access-node/access_node/include/insite/nest/spikerecorders.h similarity index 85% rename from access-node/access_node/include/insite/nest/nestSpikeRecorders.h rename to access-node/access_node/include/insite/nest/spikerecorders.h index c17e7f80..9d88073f 100644 --- a/access-node/access_node/include/insite/nest/nestSpikeRecorders.h +++ b/access-node/access_node/include/insite/nest/spikerecorders.h @@ -1,38 +1,38 @@ #pragma once #include <config.h> #include <cpr/cpr.h> -#include <jsonStrings.h> -#include <nest/nestSpikes.h> +#include <iostream> +#include <iterator> +#include <nest/json_strings.h> +#include <nest/spikes.h> +#include <optional> #include <rapidjson/document.h> #include <rapidjson/stringbuffer.h> #include <spdlog/fmt/ostr.h> #include <spdlog/fmt/ranges.h> #include <spdlog/spdlog.h> #include <spikedetector.h> -#include <utilityFunctions.h> -#include <iostream> -#include <iterator> -#include <optional> #include <unordered_set> +#include <utility_functions.h> #include <vector> namespace insite { // Receives a rapidjson-Object and checks if it has all the necessary properties // for spikeRecorderData void CheckSpikeRecorderDataValid( - const rapidjson::GenericObject<false, rapidjson::Value>& - json_spikerecorder) { + const rapidjson::GenericObject<false, rapidjson::Value> + &json_spikerecorder) { assert(json_spikerecorder.HasMember(json_strings::kSpikerecorderId) && json_spikerecorder[json_strings::kSpikerecorderId].IsInt()); assert(json_spikerecorder.HasMember(json_strings::kNodeIds) && json_spikerecorder[json_strings::kNodeId].IsArray()); } -std::vector<Spikerecorder> GetSpikerecorder( - const rapidjson::Value& json_spikerecorders) { +std::vector<Spikerecorder> +GetSpikerecorder(const rapidjson::Value &json_spikerecorders) { std::vector<Spikerecorder> spikerecorders; - for (const auto& recorder : json_spikerecorders.GetArray()) { + for (const auto &recorder : json_spikerecorders.GetArray()) { spikerecorders.emplace_back(recorder); } @@ -53,16 +53,19 @@ inline crow::response SpikeRecorders(int api_version) { auto response = QueryRandomNode(ServerConfig::GetInstance().request_nest_urls, endpoint, api_version); + if (response.status_code == 202) { + return crow::response(202); + } std::string response_text = response.text; rapidjson::Document json_spikerecorders; - spdlog::error("{}", response_text); + // spdlog::error("{}", response_text); json_spikerecorders.Parse(response_text.c_str()); if (api_version == 1) { json_writer.StartArray(); auto spikerecorder = GetSpikerecorder(json_spikerecorders); - for (const auto& spikerecorder : spikerecorder) { + for (const auto &spikerecorder : spikerecorder) { spikerecorder.WriteToJson(json_writer); } json_writer.EndArray(); @@ -78,7 +81,7 @@ inline crow::response SpikeRecorders(int api_version) { json_writer.String(sim_id.c_str()); json_writer.Key("spikerecorders"); json_writer.StartArray(); - for (const auto& spikerecorder : spikerecorder) { + for (const auto &spikerecorder : spikerecorder) { spikerecorder.WriteToJson(json_writer); } json_writer.EndArray(); @@ -89,7 +92,7 @@ inline crow::response SpikeRecorders(int api_version) { return crow::response(202); } -inline crow::response SpikesBySpikeRecorderId(const crow::request& req, +inline crow::response SpikesBySpikeRecorderId(const crow::request &req, int api_version, int requested_spikerecorder_id) { SpikeParameter params(req.url_params); @@ -120,4 +123,4 @@ inline crow::response SpikesBySpikeRecorderId(const crow::request& req, // return {buffer.GetString()}; return {NestGetSpikes(params, api_version)}; } -} // namespace insite +} // namespace insite diff --git a/access-node/access_node/include/insite/nest/nestSpikes.h b/access-node/access_node/include/insite/nest/spikes.h similarity index 96% rename from access-node/access_node/include/insite/nest/nestSpikes.h rename to access-node/access_node/include/insite/nest/spikes.h index 6c3cbda5..d12ceb11 100644 --- a/access-node/access_node/include/insite/nest/nestSpikes.h +++ b/access-node/access_node/include/insite/nest/spikes.h @@ -2,6 +2,7 @@ #include "query_params.h" #include <iostream> #include <iterator> +#include <nest/spike_container.h> #include <optional> #include <pdqsort.h> #include <rapidjson/document.h> @@ -9,11 +10,10 @@ #include <schema_generated.h> #include <spdlog/fmt/chrono.h> #include <spdlog/spdlog.h> -#include <spike.h> #include <unordered_set> #include <vector> // #include "pdqsort.h" -#include <utilityFunctions.h> +#include <utility_functions.h> namespace insite { // Receives a rapidjson-Object and checks if it has all the necessary properties diff --git a/access-node/access_node/include/insite/nest/nestVersion.h b/access-node/access_node/include/insite/nest/version.h similarity index 100% rename from access-node/access_node/include/insite/nest/nestVersion.h rename to access-node/access_node/include/insite/nest/version.h diff --git a/access-node/access_node/include/insite/opcodes.h b/access-node/access_node/include/insite/opcodes.h index 859d1a1e..188e97bf 100644 --- a/access-node/access_node/include/insite/opcodes.h +++ b/access-node/access_node/include/insite/opcodes.h @@ -7,7 +7,10 @@ enum Opcode : OpcodeType { kData, kRegisterNewMonitor, kStartSim, - kEndSim + kEndSim, + kDeregisterMonitor, + kSimInfo, + kSimInfoReturn }; enum DataType : char { diff --git a/access-node/access_node/include/insite/params.h.bak b/access-node/access_node/include/insite/params.h.bak deleted file mode 100644 index 6115130f..00000000 --- a/access-node/access_node/include/insite/params.h.bak +++ /dev/null @@ -1,153 +0,0 @@ -#pragma once -#include <crow/http_request.h> -#include <crow/query_string.h> -#include <jsonStrings.h> -#include <spdlog/spdlog.h> -#include <array> -#include <optional> -#include <sstream> -#include <string> -#include <unordered_map> -#include <unordered_set> -#include <utility> -#include <variant> -#include <vector> -#include "string_util.h" - -// template <std::size_t N, typename... Types> -// using NthParameterT = std::tuple_element_t<N, std::tuple<Types...>>; - -namespace insite { - -template <class> -inline constexpr bool kAlwaysFalseV = false; -using ParameterValue = std::variant<std::string, - bool, - int, - double, - uint64_t, - std::unordered_set<uint64_t>>; -using OptionalParameterValue = std::optional<ParameterValue>; -using ParameterName = std::string; - -struct Param { - ParameterName name; - ParameterValue value; - - [[nodiscard]] std::string KeyValueToString() const; - [[nodiscard]] ParameterName Name() const { return name; }; - [[nodiscard]] ParameterValue Value() const { return value; }; - template <typename T> - [[nodiscard]] T ValueAsT() const { - return std::get<T>(value); - }; -}; - -struct OptionalParameter { - ParameterName name; - OptionalParameterValue value; - - template <class T> - [[nodiscard]] static OptionalParameter GetFromQueryString( - const crow::query_string& query, - const char* name) { - std::optional<T> result; - - if (query.get(name) != nullptr) { - result = ConvertStringToType<T>(query.get(name)); - SPDLOG_DEBUG("{}: {}", name, result.value()); - } else { - SPDLOG_DEBUG("{}: no value", name); - } - - return {name, result}; - } - - template <class T> - [[nodiscard]] inline static OptionalParameter GetFromQueryString( - const crow::request& req, - const char* name) { - return OptionalParameter::GetFromQueryString<T>(req.url_params, name); - }; - - template <class T> - [[nodiscard]] static OptionalParameter GetUSetFromQueryString( - const crow::query_string& query_string, - const char* name) { - std::unordered_set<T> result; - - if (!query_string.get_list(name, false).empty()) { - std::vector<char*> value_strings = query_string.get_list(name, false); - for (char* value_string : value_strings) { - T value = ConvertStringToType<T>(value_string); - result.insert(value); - } - return {name, result}; - } - return {name, std::nullopt}; - } - - template <class T> - [[nodiscard]] inline static OptionalParameter GetUSetFromQueryString( - const crow::request& req, - const char* name) { - return GetUSetFromQueryString<T>(req.url_params, name); - } - - // - [[nodiscard]] std::string KeyValueToString() const; - - [[nodiscard]] ParameterValue Value() { return value.value(); }; - - template <class T> - [[nodiscard]] T ValueAsT() { - return std::get<T>(value.value()); - }; - - template <class T> - [[nodiscard]] T ValueAsTOr(T default_value) { - return value.has_value() ? std::get<T>(value.value()) : default_value; - }; - - [[nodiscard]] bool HasValue() const { return value.has_value(); }; - - operator bool() const { return value.has_value(); } -}; - -struct OptionalParameters { - public: - // std::vector<OptionalParameter> parameters; - std::unordered_map<ParameterName, OptionalParameter> parameters; - - [[nodiscard]] std::vector<ParameterName> Keys(); - [[nodiscard]] std::vector<ParameterValue> Values(); - - [[nodiscard]] OptionalParameter GetValue(const ParameterName& parameter_name); - - [[nodiscard]] std::string ToQueryString(); - [[nodiscard]] static std::string ToQueryString( - const std::vector<OptionalParameter>& parameters); -}; - -struct MultimeterParameters : public OptionalParameters { - MultimeterParameters(const crow::request& request) { - using namespace insite::json_strings; - - parameters.insert({kFromTime, OptionalParameter::GetFromQueryString<double>( - request.url_params, kFromTime)}); - parameters.insert({kToTime, OptionalParameter::GetFromQueryString<double>( - request, kToTime)}); - parameters.insert( - {kNodeIds, OptionalParameter::GetUSetFromQueryString<uint64_t>( - request, kNodeIds)}); - parameters.insert({kSkip, OptionalParameter::GetFromQueryString<uint64_t>( - request, kSkip)}); - parameters.insert( - {kTop, OptionalParameter::GetFromQueryString<uint64_t>(request, kTop)}); - parameters.insert( - {kSort, - OptionalParameter::GetFromQueryString<std::string>(request, kSort)}); - } -}; - -} // namespace insite diff --git a/access-node/access_node/include/insite/queryStringBuilder.h b/access-node/access_node/include/insite/query_string_builder.h similarity index 100% rename from access-node/access_node/include/insite/queryStringBuilder.h rename to access-node/access_node/include/insite/query_string_builder.h diff --git a/access-node/access_node/include/insite/spikedetector.h b/access-node/access_node/include/insite/spikedetector.h index 24705bbe..e2d70172 100644 --- a/access-node/access_node/include/insite/spikedetector.h +++ b/access-node/access_node/include/insite/spikedetector.h @@ -9,8 +9,8 @@ #include <unordered_set> #include <vector> -#include <nest/nestSpikes.h> -#include <utilityFunctions.h> +#include <nest/spikes.h> +#include <utility_functions.h> namespace insite { using NodeList = std::vector<uint64_t>; diff --git a/access-node/access_node/include/insite/tvb_http_endpoints.h b/access-node/access_node/include/insite/tvb/endpoints.h similarity index 61% rename from access-node/access_node/include/insite/tvb_http_endpoints.h rename to access-node/access_node/include/insite/tvb/endpoints.h index 88523196..c5b3f3b8 100644 --- a/access-node/access_node/include/insite/tvb_http_endpoints.h +++ b/access-node/access_node/include/insite/tvb/endpoints.h @@ -5,8 +5,9 @@ #include "query_params.h" #include "rapidjson/stringbuffer.h" #include "rapidjson/writer.h" -#include "tvb_handler.h" -#include "utilityFunctions.h" +#include <chrono> +#include <tvb/handler.h> +#include <utility_functions.h> namespace insite { class TVBHttpEndpoint { @@ -18,10 +19,13 @@ public: CROW_ROUTE(app, "/tvb/data")(&TVBHttpEndpoint::GetData); CROW_ROUTE(app, "/tvb/monitors")(&TVBHttpEndpoint::GetMonitors); CROW_ROUTE(app, "/tvb/exec/")(&TVBHttpEndpoint::LOL); + CROW_ROUTE(app, "/tvb/simulation_info/")(&TVBHttpEndpoint::GetSimInfo); + CROW_ROUTE(app, "/tvb/simulation_info/<path>") + (&TVBHttpEndpoint::GetSimInfoDetails); } static crow::response LOL(const crow::request &request) { - if (tvb_handler->srv) { + if (tvb_handler->srv != nullptr) { auto query_string = GetQueryString(request.raw_url).substr(1); tvb_handler->srv->BroadcastAll(query_string, ResourceFlag::kTVB); } else { @@ -30,6 +34,39 @@ public: return {""}; } + static crow::response GetSimInfoDetails(const crow::request &request, + const std::string &value) { + if (tvb_handler->srv != nullptr) { + tvb_handler->srv->BroadcastAll(value, ResourceFlag::kTVB); + tvb_handler->sim_info_promise = std::promise<std::string>(); + auto future = tvb_handler->sim_info_promise.get_future(); + auto result = future.wait_for(std::chrono::milliseconds(500)); + + if (result == std::future_status::timeout) { + return {"timeout..."}; + } + + auto value = future.get(); + if (value == "null") { + return {crow::status::BAD_REQUEST, + R"({"error":"attribute not found"})"}; + } + return {value}; + } else { + spdlog::error("Websocket Server in TVB Handler not set!"); + return {"error"}; + } + } + + static crow::response GetSimInfo(const crow::request &request) { + rapidjson::StringBuffer buffer; + rapidjson::Writer<rapidjson::StringBuffer> writer(buffer); + + tvb_handler->sim_info.Accept(writer); + + return {buffer.GetString()}; + } + static crow::response GetMonitors(const crow::request &request) { rapidjson::StringBuffer buffer; rapidjson::Writer<rapidjson::StringBuffer> writer(buffer); diff --git a/access-node/access_node/include/insite/tvb_handler.h b/access-node/access_node/include/insite/tvb/handler.h similarity index 84% rename from access-node/access_node/include/insite/tvb_handler.h rename to access-node/access_node/include/insite/tvb/handler.h index 93490131..c19b2072 100644 --- a/access-node/access_node/include/insite/tvb_handler.h +++ b/access-node/access_node/include/insite/tvb/handler.h @@ -2,21 +2,24 @@ #include "opcodes.h" #include "rapidjson/stringbuffer.h" #include "rapidjson/writer.h" -#include "tvbMonitor.h" #include "websocket_server.h" #include <condition_variable> #include <cstdint> #include <mutex> #include <spdlog/spdlog.h> #include <thread> +#include <tvb/monitor.h> #include <unistd.h> namespace insite { class TvbHandler { public: TvbHandler() = default; + + void ParseSimInfoReturn(const std::string &payload); void ParseDataPacket(const std::string &payload); void ParseNewMonitorPacket(const std::string &payload); + void ParseSimInfo(const std::string &payload); void SerializeMonitorsJson(rapidjson::Writer<rapidjson::StringBuffer> &writer); void AddMessageIntoQueue(std::string &&msg); @@ -36,6 +39,8 @@ public: // WebsocketServer *srv; uint64_t bytes = 0; // private: + + std::promise<std::string> sim_info_promise; bool runConsumerLoop_ = true; std::vector<std::string> message_queue_; uint32_t number_of_monitors = 0; @@ -43,5 +48,7 @@ public: std::vector<TvbMonitor<double>> double_monitors_; std::condition_variable var_; std::mutex mut_; + + rapidjson::Document sim_info; }; } // namespace insite diff --git a/access-node/access_node/include/insite/tvbMonitor.h b/access-node/access_node/include/insite/tvb/monitor.h similarity index 79% rename from access-node/access_node/include/insite/tvbMonitor.h rename to access-node/access_node/include/insite/tvb/monitor.h index a0acef3e..dfb48ae0 100644 --- a/access-node/access_node/include/insite/tvbMonitor.h +++ b/access-node/access_node/include/insite/tvb/monitor.h @@ -1,15 +1,15 @@ #pragma once -#include <rapidjson/document.h> -#include <rapidjson/writer.h> +#include "circular_timeseries.h" #include <cstdint> #include <iterator> #include <limits> #include <optional> +#include <rapidjson/document.h> +#include <rapidjson/writer.h> #include <string> #include <type_traits> #include <utility> #include <vector> -#include "circular_timeseries.h" // #include "params.h" #include "spdlog/fmt/fmt.h" #include "spdlog/spdlog.h" @@ -17,24 +17,19 @@ namespace insite { -template <typename T> -class TvbMonitor { +template <typename T> class TvbMonitor { using It = typename std::vector<T>::iterator; - public: +public: uint32_t internal_id; std::string name; std::string uid; std::vector<std::string> observed_variables; - TvbMonitor(std::string name, - uint32_t internal_id, - std::string uid, + TvbMonitor(std::string name, uint32_t internal_id, std::string uid, std::vector<std::string> observed_variables) - : name(std::move(name)), - internal_id(internal_id), - uid(std::move(uid)), - data(4, {1, 76, 2}), + : name(std::move(name)), internal_id(internal_id), uid(std::move(uid)), + data(10, {1, 76, 2}), observed_variables(std::move(observed_variables)) { stride_length.push_back(1); stride_length.push_back(76); @@ -42,8 +37,8 @@ class TvbMonitor { SPDLOG_DEBUG(stride_length); }; - void SerializeMetadataToJson( - rapidjson::Writer<rapidjson::StringBuffer>& writer) { + void + SerializeMetadataToJson(rapidjson::Writer<rapidjson::StringBuffer> &writer) { writer.StartObject(); writer.Key("uid"); writer.String(uid.c_str()); @@ -53,14 +48,14 @@ class TvbMonitor { writer.String(name.c_str()); writer.Key("observedVariables"); writer.StartArray(); - for (const auto& var : observed_variables) { + for (const auto &var : observed_variables) { writer.String(var.c_str()); } writer.EndArray(); writer.EndObject(); } - void SerializeDataToJson(rapidjson::Writer<rapidjson::StringBuffer>& writer, + void SerializeDataToJson(rapidjson::Writer<rapidjson::StringBuffer> &writer, tl::optional<double> from_time, tl::optional<double> to_time) { writer.StartObject(); @@ -81,7 +76,7 @@ class TvbMonitor { writer.Key(observed_variables[var].c_str()); writer.StartArray(); auto res = data.GetVarByIndex(timestep, var); - for (auto& data : res) { + for (auto &data : res) { if constexpr (std::is_same_v<T, double>) { writer.Double(data); } @@ -105,18 +100,17 @@ class TvbMonitor { }; }; -} // namespace insite +} // namespace insite -template <typename T> -struct fmt::formatter<insite::TvbMonitor<T>> { - constexpr auto parse(format_parse_context& ctx) // NOLINT +template <typename T> struct fmt::formatter<insite::TvbMonitor<T>> { + constexpr auto parse(format_parse_context &ctx) // NOLINT -> decltype(ctx.begin()) { return ctx.begin(); } template <typename FormatContext> - auto format(const insite::TvbMonitor<T>& monitor, // NOLINT - FormatContext& ctx) const -> decltype(ctx.out()) { + auto format(const insite::TvbMonitor<T> &monitor, // NOLINT + FormatContext &ctx) const -> decltype(ctx.out()) { return fmt::format_to(ctx.out(), "Monitor {} Name: {}, Observed Vars: {}", monitor.uid, monitor.name, monitor.observed_variables); diff --git a/access-node/access_node/include/insite/utilityFunctions.h b/access-node/access_node/include/insite/utility_functions.h similarity index 95% rename from access-node/access_node/include/insite/utilityFunctions.h rename to access-node/access_node/include/insite/utility_functions.h index 8e638b4b..0e183216 100644 --- a/access-node/access_node/include/insite/utilityFunctions.h +++ b/access-node/access_node/include/insite/utility_functions.h @@ -14,9 +14,9 @@ #include <unordered_set> #include <vector> -#include <jsonStrings.h> -#include <queryStringBuilder.h> -#include <spike.h> +#include <nest/json_strings.h> +#include <nest/spike_container.h> +#include <query_string_builder.h> namespace insite { #ifdef INSITE_PRETTY_JSON diff --git a/access-node/access_node/include/insite/websocket_sender.h b/access-node/access_node/include/insite/websocket_sender.h index d1cba5b0..b2798134 100644 --- a/access-node/access_node/include/insite/websocket_sender.h +++ b/access-node/access_node/include/insite/websocket_sender.h @@ -1,19 +1,19 @@ #pragma once -#include <spdlog/spdlog.h> -#include <unistd.h> -#include <condition_variable> -#include <cstdint> -#include <map> -#include <mutex> -#include <thread> #include "opcodes.h" #include "rapidjson/stringbuffer.h" #include "rapidjson/writer.h" -#include "tvbMonitor.h" +#include "resource_flags.h" #include "websocketpp/common/connection_hdl.hpp" #include "websocketpp/config/asio_no_tls.hpp" #include "websocketpp/roles/server_endpoint.hpp" -#include "resource_flags.h" +#include <condition_variable> +#include <cstdint> +#include <map> +#include <mutex> +#include <spdlog/spdlog.h> +#include <thread> +#include <tvb/monitor.h> +#include <unistd.h> namespace insite { using Server = websocketpp::server<websocketpp::config::asio>; @@ -27,24 +27,30 @@ struct ClientParams { }; class WebsocketSender { - public: - WebsocketSender(std::map<websocketpp::connection_hdl, ClientParams, std::owner_less<websocketpp::connection_hdl>>& connection_map, Server& websocket_server, std::mutex& mutex, std::condition_variable& cond) - : connection_map(connection_map),var_(cond), mut_(mutex), websocket_server(websocket_server) {} +public: + WebsocketSender( + std::map<websocketpp::connection_hdl, ClientParams, + std::owner_less<websocketpp::connection_hdl>> &connection_map, + Server &websocket_server, std::mutex &mutex, + std::condition_variable &cond) + : connection_map(connection_map), var_(cond), mut_(mutex), + websocket_server(websocket_server) {} - void StartThread(std::vector<WebsocketMessage>* queue) { + void StartThread(std::vector<WebsocketMessage> *queue) { consumer_thread_ = std::thread(&WebsocketSender::Consumer, this, queue); } - void Consumer(std::vector<WebsocketMessage>* queue); + void Consumer(std::vector<WebsocketMessage> *queue); // void BroadcastAll(const std::string& msg); - void BroadcastAll(const std::string& msg, ResourceFlag resource); - + void BroadcastAll(const std::string &msg, ResourceFlag resource); + // private: - std::map<websocketpp::connection_hdl, ClientParams, std::owner_less<websocketpp::connection_hdl>>& connection_map; + std::map<websocketpp::connection_hdl, ClientParams, + std::owner_less<websocketpp::connection_hdl>> &connection_map; std::thread consumer_thread_; - std::condition_variable& var_; - std::mutex& mut_; - Server& websocket_server; + std::condition_variable &var_; + std::mutex &mut_; + Server &websocket_server; }; -} // namespace insite +} // namespace insite diff --git a/access-node/access_node/params.cpp.bak b/access-node/access_node/params.cpp.bak deleted file mode 100644 index 09381d07..00000000 --- a/access-node/access_node/params.cpp.bak +++ /dev/null @@ -1,98 +0,0 @@ -#include "params.h" -#include <optional> -#include <unordered_set> -#include <vector> -#include "crow/query_string.h" -#include "queryStringBuilder.h" - -namespace insite { -template <typename> -struct IsStdUSet : std::false_type {}; - -template <typename T, typename A> -struct IsStdUSet<std::unordered_set<T, A>> : std::true_type {}; -std::string Param::KeyValueToString() const { - std::string res = name; - - std::visit( - [&res, this](auto&& arg) { - using T = std::decay_t<decltype(arg)>; - if constexpr (std::is_same_v<T, std::string>) { - res += name + "=" + arg; - } else if constexpr (std::is_arithmetic_v<T>) { - res += name + "=" + std::to_string(arg); - } else if constexpr (IsStdUSet<T>::value) { - } else { - static_assert(kAlwaysFalseV<T>, "non-exhaustive visitor!"); - } - }, - value); - - return res; -} - -std::string OptionalParameter::KeyValueToString() const { - std::string res = name + "="; - if (!value) { - return ""; - } - - std::visit( - [&res, this](auto&& arg) { - using T = std::decay_t<decltype(arg)>; - if constexpr (std::is_same_v<T, std::string>) { - res += arg; - } else if constexpr (std::is_arithmetic_v<T>) { - res += std::to_string(arg); - } else if constexpr (IsStdUSet<T>::value) { - res += UnorderedSetToCsv(arg); - } else { - static_assert(kAlwaysFalseV<T>, "non-exhaustive visitor!"); - } - }, - value.value()); - - return res; -} - -std::string OptionalParameters::ToQueryString( - const std::vector<OptionalParameter>& parameters) { - std::string result = "?"; - for (auto it = parameters.begin(); it != parameters.end(); ++it) { - if (*it) { - if (it != parameters.begin()) { - result += "&"; - } - result += it->KeyValueToString(); - } - } - - return result; -} - -std::string OptionalParameters::ToQueryString() { - std::string result = "?"; - for (auto it = parameters.begin(); it != parameters.end(); ++it) { - if (it != parameters.begin()) { - result += "&"; - } - if (it->second) { - result += it->second.KeyValueToString(); - } - } - - return result; -} - -// Returns the parameter value if it is present nullopt otherwise -OptionalParameter OptionalParameters::GetValue( - const ParameterName& parameter_name) { - if (auto parameter = parameters.find(parameter_name); - parameter != parameters.end()) { - return parameter->second; - } - - return {parameter_name, std::nullopt}; -} - -} // namespace insite diff --git a/access-node/access_node/arbor/arbor_strings.cpp b/access-node/access_node/src/arbor/arbor_strings.cpp similarity index 100% rename from access-node/access_node/arbor/arbor_strings.cpp rename to access-node/access_node/src/arbor/arbor_strings.cpp diff --git a/access-node/access_node/arbor/cell_endpoints.cpp b/access-node/access_node/src/arbor/cell_endpoints.cpp similarity index 97% rename from access-node/access_node/arbor/cell_endpoints.cpp rename to access-node/access_node/src/arbor/cell_endpoints.cpp index fc90f79d..28ffeb7a 100644 --- a/access-node/access_node/arbor/cell_endpoints.cpp +++ b/access-node/access_node/src/arbor/cell_endpoints.cpp @@ -6,10 +6,10 @@ #include "rapidjson/rapidjson.h" #include "rapidjson/stringbuffer.h" #include "spdlog/spdlog.h" -#include "utilityFunctions.h" #include <arbor/arbor_strings.h> #include <arbor/cell_endpoints.h> #include <config.h> +#include <utility_functions.h> namespace insite::arbor { diff --git a/access-node/access_node/arbor/parameters.cpp b/access-node/access_node/src/arbor/parameters.cpp similarity index 100% rename from access-node/access_node/arbor/parameters.cpp rename to access-node/access_node/src/arbor/parameters.cpp diff --git a/access-node/access_node/arbor/probe_endpoints.cpp b/access-node/access_node/src/arbor/probe_endpoints.cpp similarity index 98% rename from access-node/access_node/arbor/probe_endpoints.cpp rename to access-node/access_node/src/arbor/probe_endpoints.cpp index 3cdfbc36..9f8308f2 100644 --- a/access-node/access_node/arbor/probe_endpoints.cpp +++ b/access-node/access_node/src/arbor/probe_endpoints.cpp @@ -3,10 +3,10 @@ #include "rapidjson/document.h" #include "rapidjson/stringbuffer.h" #include "spdlog/spdlog.h" -#include "utilityFunctions.h" #include <arbor/arbor_strings.h> #include <arbor/probe_endpoints.h> #include <config.h> +#include <utility_functions.h> namespace insite::arbor { diff --git a/access-node/access_node/arbor/spike_endpoints.cpp b/access-node/access_node/src/arbor/spike_endpoints.cpp similarity index 96% rename from access-node/access_node/arbor/spike_endpoints.cpp rename to access-node/access_node/src/arbor/spike_endpoints.cpp index d5f8d6c4..425d50d6 100644 --- a/access-node/access_node/arbor/spike_endpoints.cpp +++ b/access-node/access_node/src/arbor/spike_endpoints.cpp @@ -5,11 +5,11 @@ #include "rapidjson/rapidjson.h" #include "rapidjson/stringbuffer.h" #include "spdlog/spdlog.h" -#include "utilityFunctions.h" #include <arbor/arbor_strings.h> #include <arbor/cell_endpoints.h> #include <arbor/spike_endpoints.h> #include <config.h> +#include <utility_functions.h> namespace insite::arbor { diff --git a/access-node/access_node/config.cpp b/access-node/access_node/src/config.cpp similarity index 100% rename from access-node/access_node/config.cpp rename to access-node/access_node/src/config.cpp diff --git a/access-node/access_node/insite_defines.cpp b/access-node/access_node/src/insite_defines.cpp similarity index 100% rename from access-node/access_node/insite_defines.cpp rename to access-node/access_node/src/insite_defines.cpp diff --git a/access-node/access_node/main.cpp b/access-node/access_node/src/main.cpp similarity index 83% rename from access-node/access_node/main.cpp rename to access-node/access_node/src/main.cpp index f37680db..0f005acb 100644 --- a/access-node/access_node/main.cpp +++ b/access-node/access_node/src/main.cpp @@ -1,8 +1,6 @@ #define CROW_MAIN #include "arbor/arbor_endpoints.h" #include "crow/middlewares/cors.h" -#include "nest/nest_endpoints.h" -#include "nest_handler.h" #include "spdlog/cfg/env.h" #include "spdlog/spdlog.h" #include <config.h> @@ -10,14 +8,12 @@ #include <crow/routing.h> #include <exception> #include <limits> -#include <nest/nestKernelStatus.h> -#include <nest/nestMultimeter.h> -#include <nest/nestNode.h> -#include <nest/nestSpikeRecorders.h> -#include <nest/nestSpikes.h> -#include <nest/nestVersion.h> -#include <tvb_handler.h> -#include <tvb_http_endpoints.h> +#include <nest/endpoints.h> +#include <nest/handler.h> +#include <nest/spikerecorders.h> +#include <nest/spikes.h> +#include <tvb/endpoints.h> +#include <tvb/handler.h> #include <websocket_server.h> #include <websocketpp/config/asio_no_tls.hpp> @@ -29,7 +25,6 @@ int main() { using namespace insite; spdlog::set_level(spdlog::level::trace); SPDLOG_INFO("Starting Insite access node"); - ServerConfig::GetInstance().ParseConfigIfExists(); ServerConfig::GetInstance().GenerateRequestUrls(); diff --git a/access-node/access_node/nest_handler.cpp b/access-node/access_node/src/nest/handler.cpp similarity index 94% rename from access-node/access_node/nest_handler.cpp rename to access-node/access_node/src/nest/handler.cpp index 6fc89798..232384ae 100644 --- a/access-node/access_node/nest_handler.cpp +++ b/access-node/access_node/src/nest/handler.cpp @@ -1,10 +1,3 @@ -#include "nest_handler.h" -#include <rapidjson/document.h> -#include <schema_generated.h> -#include <spdlog/fmt/bin_to_hex.h> -#include <spdlog/fmt/ranges.h> -#include <chrono> -#include <cstdint> #include "opcodes.h" #include "rapidjson/stringbuffer.h" #include "rapidjson/writer.h" @@ -12,12 +5,19 @@ #include "spike_util.h" #include "websocket_server.h" #include "websocketpp/frame.hpp" +#include <chrono> +#include <cstdint> +#include <nest/handler.h> +#include <rapidjson/document.h> +#include <schema_generated.h> +#include <spdlog/fmt/bin_to_hex.h> +#include <spdlog/fmt/ranges.h> using namespace std::chrono_literals; namespace insite { void NestHandler::AddMessageIntoQueue(websocketpp::frame::opcode::value value, - std::string&& msg) { + std::string &&msg) { { std::lock_guard mutex(mut_); message_queue_.emplace_back(value, std::move(msg)); @@ -34,7 +34,7 @@ void NestHandler::Consumer() { while (!message_queue_.empty()) { if (message_queue_.back().first == websocketpp::frame::opcode::BINARY) { // storage.AddSpikesFromFlatbuffer(message_queue_.back().second.c_str()); - const Insite::Nest::SpikeTable* spike_table = + const Insite::Nest::SpikeTable *spike_table = Insite::Nest::GetSpikeTable(message_queue_.back().second.c_str()); double lastTimestamp = 0; if (spike_table->spikes()->size() > 0) { @@ -76,4 +76,4 @@ void NestHandler::Consumer() { SPDLOG_DEBUG("Finished NestHandler Consumer Thread"); } -} // namespace insite +} // namespace insite diff --git a/access-node/access_node/nest/kernelStatus.cpp b/access-node/access_node/src/nest/kernel_status.cpp similarity index 84% rename from access-node/access_node/nest/kernelStatus.cpp rename to access-node/access_node/src/nest/kernel_status.cpp index 94c4a0a2..7138c075 100644 --- a/access-node/access_node/nest/kernelStatus.cpp +++ b/access-node/access_node/src/nest/kernel_status.cpp @@ -1,28 +1,28 @@ +#include "config.h" +#include "rapidjson/document.h" +#include "rapidjson/stringbuffer.h" #include <cpr/cpr.h> -#include <spdlog/spdlog.h> #include <iterator> +#include <spdlog/spdlog.h> #include <unordered_set> #include <vector> -#include "config.h" -#include "rapidjson/document.h" -#include "rapidjson/stringbuffer.h" -#include "utilityFunctions.h" +#include <utility_functions.h> namespace insite { // Get all kernelStatuses from the nest-server -rapidjson::Value NestGetKernelStatuses( - int api_version, - rapidjson::MemoryPoolAllocator<>& json_alloc) { +rapidjson::Value +NestGetKernelStatuses(int api_version, + rapidjson::MemoryPoolAllocator<> &json_alloc) { // get request results back and store in array std::string endpoint; switch (api_version) { - case 1: - endpoint = "/kernelStatus"; - break; - case 2: - endpoint = "/v2/kernelStatus"; - break; + case 1: + endpoint = "/kernelStatus"; + break; + case 2: + endpoint = "/v2/kernelStatus"; + break; } CprResponseVec kernel_statuses = GetAccessNodeRequests( ServerConfig::GetInstance().request_nest_urls, endpoint); @@ -33,7 +33,7 @@ rapidjson::Value NestGetKernelStatuses( rapidjson::Value kernel_status_result_array(rapidjson::kArrayType); // loop through all kernelStatus-data-sets and create a new object for each - for (cpr::Response& kernel_status : kernel_statuses) { + for (cpr::Response &kernel_status : kernel_statuses) { // create rapidjson-document for current kernelStatus-data-set and parse // data into it rapidjson::Document kernel_data_old; @@ -49,7 +49,7 @@ rapidjson::Value NestGetKernelStatuses( } // copy all members from the old data-set to the new one - for (auto& member : kernel_data_old.GetObject()) { + for (auto &member : kernel_data_old.GetObject()) { rapidjson::Value key(member.name.GetString(), json_alloc); // rapidjson::Value key(member.name.GetString(), member.name.Size()); kernel_data_new.AddMember(key, member.value, json_alloc); @@ -81,4 +81,4 @@ crow::response KernelStatus(int api_version) { return {DocumentToString(result_doc)}; } -} // namespace insite +} // namespace insite diff --git a/access-node/access_node/nest/nestMultimeter.cpp b/access-node/access_node/src/nest/multimeter.cpp similarity index 96% rename from access-node/access_node/nest/nestMultimeter.cpp rename to access-node/access_node/src/nest/multimeter.cpp index 795ebfe4..e0b6f7f3 100644 --- a/access-node/access_node/nest/nestMultimeter.cpp +++ b/access-node/access_node/src/nest/multimeter.cpp @@ -1,18 +1,18 @@ #include "config.h" #include "cpr/response.h" #include "crow/http_response.h" -#include "jsonStrings.h" #include "query_params.h" -#include "utilityFunctions.h" #include <algorithm> #include <cstdint> #include <iterator> -#include <nest/nestMultimeter.h> +#include <nest/json_strings.h> +#include <nest/multimeter.h> #include <rapidjson/document.h> #include <rapidjson/stringbuffer.h> #include <rapidjson/writer.h> #include <unordered_map> #include <utility> +#include <utility_functions.h> #include <vector> namespace insite { @@ -52,7 +52,7 @@ crow::response MultimeterResponse(int api_version) { for (auto &multimeter : multimeter_responses) { rapidjson::Document multimeter_resp_doc; multimeter_resp_doc.Parse(multimeter.text.c_str()); - spdlog::error(multimeter.text.c_str()); + // spdlog::error(multimeter.text.c_str()); if (api_version == 1) { for (auto &multimeter : multimeter_resp_doc.GetArray()) { @@ -111,7 +111,7 @@ crow::response MultimeterByIdResponse(int api_version, for (auto &multimeter : multimeter_responses) { rapidjson::Document multimeter_resp_doc; multimeter_resp_doc.Parse(multimeter.text.c_str()); - spdlog::error(multimeter.text.c_str()); + // spdlog::error(multimeter.text.c_str()); if (api_version == 1) { for (auto &multimeter : multimeter_resp_doc.GetArray()) { @@ -196,7 +196,7 @@ NestGetMultimeterAttributesV2(const uint64_t multimeter_id, for (auto &response : mm_data_sets) { rapidjson::Document json_doc; json_doc.Parse(response.text.c_str()); - spdlog::error(response.text); + // spdlog::error(response.text); multimeter_values.AddDataFromJson(json_doc); multimeter_values.sim_id = json_doc["simId"]; } @@ -250,13 +250,13 @@ crow::response MultimeterAttributesResponse(const crow::request &req, MultimeterValueContainer result = std::move( NestGetMultimeterAttributes(multimeter_id, attr_name, params)); result.SerializeToJson(writer); - spdlog::error(buffer.GetString()); + // spdlog::error(buffer.GetString()); } else if (api_version == 2) { MultimeterValueContainer result = std::move( NestGetMultimeterAttributesV2(multimeter_id, attr_name, params)); result.SerializeToJsonV2(writer); - spdlog::error(buffer.GetString()); + // spdlog::error(buffer.GetString()); } return {buffer.GetString()}; } diff --git a/access-node/access_node/nest/nestMultimeterContainer.cpp b/access-node/access_node/src/nest/multimeter_container.cpp similarity index 98% rename from access-node/access_node/nest/nestMultimeterContainer.cpp rename to access-node/access_node/src/nest/multimeter_container.cpp index 575025bf..9b880a5f 100644 --- a/access-node/access_node/nest/nestMultimeterContainer.cpp +++ b/access-node/access_node/src/nest/multimeter_container.cpp @@ -1,6 +1,6 @@ -#include "jsonStrings.h" #include <algorithm> -#include <nest/nestMultimeterContainer.h> +#include <nest/json_strings.h> +#include <nest/multimeter_container.h> namespace insite { void MultimeterContainer::SerializeToJson( diff --git a/access-node/access_node/nest/nestNode.cpp b/access-node/access_node/src/nest/nodecollections.cpp similarity index 81% rename from access-node/access_node/nest/nestNode.cpp rename to access-node/access_node/src/nest/nodecollections.cpp index 49d5108a..51714e7c 100644 --- a/access-node/access_node/nest/nestNode.cpp +++ b/access-node/access_node/src/nest/nodecollections.cpp @@ -1,35 +1,34 @@ -#include <nest/nestNode.h> -#include <toml++/impl/json_formatter.h> +#include "config.h" +#include "rapidjson/rapidjson.h" +#include "rapidjson/stringbuffer.h" #include <cstdint> +#include <nest/json_strings.h> +#include <nest/nodecollections.h> #include <optional> +#include <toml++/impl/json_formatter.h> #include <unordered_set> #include <vector> -#include "config.h" -#include "jsonStrings.h" -#include "rapidjson/rapidjson.h" -#include "rapidjson/stringbuffer.h" -#include <nest/nestSpikes.h> -#include <spdlog/fmt/ostr.h> -#include <spdlog/fmt/ranges.h> #include "rapidjson/writer.h" #include "spdlog/common.h" #include "spdlog/spdlog.h" -#include "utilityFunctions.h" +#include <nest/spikes.h> +#include <spdlog/fmt/ostr.h> +#include <spdlog/fmt/ranges.h> +#include <utility_functions.h> namespace insite { using OptionalDouble = std::optional<double>; using OptionalUInt = std::optional<uint64_t>; -template <class T> -using OptionalUSet = std::optional<std::unordered_set<T>>; +template <class T> using OptionalUSet = std::optional<std::unordered_set<T>>; using OptionalString = std::optional<std::string>; // Receives a rapidjson-Object and checks if it has all the necessary properties // for nodeCollectionData void CheckNodeCollectionDataValid( - const rapidjson::GenericObject<false, rapidjson::Value>& n) { + const rapidjson::GenericObject<false, rapidjson::Value> &n) { assert(n.HasMember(json_strings::kModel)); assert(n[json_strings::kModel].IsObject()); assert(n.HasMember(json_strings::kNodeCollectionId)); @@ -38,19 +37,19 @@ void CheckNodeCollectionDataValid( assert(n[json_strings::kNodes].IsObject()); } -rapidjson::Value NestGetNodes(rapidjson::MemoryPoolAllocator<>& json_alloc) { +rapidjson::Value NestGetNodes(rapidjson::MemoryPoolAllocator<> &json_alloc) { auto node_data_sets = GetAccessNodeRequests( ServerConfig::GetInstance().request_nest_urls, "/nodes"); rapidjson::Value kernel_status_result_array(rapidjson::kArrayType); - for (auto& node_data_set : node_data_sets) { + for (auto &node_data_set : node_data_sets) { rapidjson::Document current_node_data; current_node_data.Parse(node_data_set.text.c_str()); assert(current_node_data.IsArray()); - for (auto& node : current_node_data.GetArray()) { + for (auto &node : current_node_data.GetArray()) { rapidjson::Value insert(node, json_alloc); kernel_status_result_array.PushBack(insert, json_alloc); } @@ -59,20 +58,20 @@ rapidjson::Value NestGetNodes(rapidjson::MemoryPoolAllocator<>& json_alloc) { return kernel_status_result_array; } -rapidjson::Value NestGetNodes(rapidjson::MemoryPoolAllocator<>& json_alloc, - std::unordered_set<int>& param_node_ids) { +rapidjson::Value NestGetNodes(rapidjson::MemoryPoolAllocator<> &json_alloc, + std::unordered_set<int> ¶m_node_ids) { auto node_data_sets = GetAccessNodeRequests( ServerConfig::GetInstance().request_nest_urls, "/nodes", 1); rapidjson::Value node_results(rapidjson::kArrayType); - for (auto& node_data_set : node_data_sets) { + for (auto &node_data_set : node_data_sets) { rapidjson::Document current_node_data; current_node_data.Parse(node_data_set.text.c_str()); assert(current_node_data.IsArray()); - for (auto& node : current_node_data.GetArray()) { + for (auto &node : current_node_data.GetArray()) { if (param_node_ids.find(node[json_strings::kNodeId].GetInt()) == param_node_ids.end()) { continue; @@ -86,23 +85,23 @@ rapidjson::Value NestGetNodes(rapidjson::MemoryPoolAllocator<>& json_alloc, return node_results; } -rapidjson::Value NestGetNodesV2(rapidjson::MemoryPoolAllocator<>& json_alloc, - std::unordered_set<int>& param_node_ids) { +rapidjson::Value NestGetNodesV2(rapidjson::MemoryPoolAllocator<> &json_alloc, + std::unordered_set<int> ¶m_node_ids) { auto node_data_sets = GetAccessNodeRequests( ServerConfig::GetInstance().request_nest_urls, "/nodes", 2); rapidjson::Value node_results(rapidjson::kArrayType); rapidjson::Value sim_id; - for (auto& node_data_set : node_data_sets) { + for (auto &node_data_set : node_data_sets) { rapidjson::Document current_node_data; current_node_data.Parse(node_data_set.text.c_str()); - spdlog::error(node_data_set.text.c_str()); + // spdlog::error(node_data_set.text.c_str()); assert(current_node_data.IsArray()); sim_id = current_node_data["simId"]; - for (auto& node : current_node_data["nodes"].GetArray()) { + for (auto &node : current_node_data["nodes"].GetArray()) { if (param_node_ids.find(node[json_strings::kNodeId].GetInt()) == param_node_ids.end()) { continue; @@ -120,9 +119,9 @@ rapidjson::Value NestGetNodesV2(rapidjson::MemoryPoolAllocator<>& json_alloc, return result; } -rapidjson::Value NestGetNodeCollections( - rapidjson::MemoryPoolAllocator<>& json_alloc, - tl::optional<int> requested_node_collection_id) { +rapidjson::Value +NestGetNodeCollections(rapidjson::MemoryPoolAllocator<> &json_alloc, + tl::optional<int> requested_node_collection_id) { auto node_collection_data_sets = GetAccessNodeRequests( ServerConfig::GetInstance().request_nest_urls, "/nodeCollections"); @@ -130,14 +129,14 @@ rapidjson::Value NestGetNodeCollections( std::unordered_set<int> added_node_collections; - for (auto& node_collection_set : node_collection_data_sets) { + for (auto &node_collection_set : node_collection_data_sets) { auto str = node_collection_set.text; rapidjson::Document node_collection_data_old; node_collection_data_old.Parse(str.c_str()); assert(node_collection_data_old.IsArray()); - for (auto& node_collection : node_collection_data_old.GetArray()) { + for (auto &node_collection : node_collection_data_old.GetArray()) { int node_collection_id = node_collection.GetObject()[json_strings::kNodeCollectionId].GetInt(); @@ -159,9 +158,9 @@ rapidjson::Value NestGetNodeCollections( return node_collection_result_array; } -rapidjson::Value NestGetNodeCollectionsV2( - rapidjson::MemoryPoolAllocator<>& json_alloc, - tl::optional<int> requested_node_collection_id) { +rapidjson::Value +NestGetNodeCollectionsV2(rapidjson::MemoryPoolAllocator<> &json_alloc, + tl::optional<int> requested_node_collection_id) { auto node_collection_data_sets = GetAccessNodeRequests( ServerConfig::GetInstance().request_nest_urls, "/nodeCollections", 2); @@ -170,7 +169,7 @@ rapidjson::Value NestGetNodeCollectionsV2( std::unordered_set<int> added_node_collections; - for (auto& node_collection_set : node_collection_data_sets) { + for (auto &node_collection_set : node_collection_data_sets) { auto str = node_collection_set.text; rapidjson::Document node_collection_data_old; node_collection_data_old.Parse(str.c_str()); @@ -179,7 +178,7 @@ rapidjson::Value NestGetNodeCollectionsV2( sim_id = node_collection_data_old["simId"]; - for (auto& node_collection : + for (auto &node_collection : node_collection_data_old.GetObject()["nodeCollections"].GetArray()) { int node_collection_id = node_collection.GetObject()[json_strings::kNodeCollectionId].GetInt(); @@ -216,20 +215,25 @@ crow::response NodeCollections(int api_version, rapidjson::Document result_doc; rapidjson::MemoryPoolAllocator<> json_alloc; rapidjson::Value node_collection_result_array; + if (api_version == 1) { node_collection_result_array = NestGetNodeCollections(json_alloc, requested_node_collection_id); result_doc.SetArray() = node_collection_result_array.GetArray(); return {DocumentToString(result_doc)}; - } else if (api_version == 2) { + } + + if (api_version == 2) { node_collection_result_array = NestGetNodeCollectionsV2(json_alloc, requested_node_collection_id); result_doc.SetObject() = node_collection_result_array.GetObject(); return {DocumentToString(result_doc)}; } + + return crow::response{crow::status::BAD_REQUEST, "Unknown version number."}; } -crow::response SpikesByNodeCollectionId(const crow::request& req, +crow::response SpikesByNodeCollectionId(const crow::request &req, int api_version, int requested_node_collection_id) { SpikeParameter params(req.url_params); @@ -249,21 +253,21 @@ crow::response Nodes(int api_version) { rapidjson::Value kernel_status_result_array(rapidjson::kArrayType); rapidjson::Value sim_id; - for (auto& node_data_set : node_data_sets) { + for (auto &node_data_set : node_data_sets) { rapidjson::Document current_node_data; current_node_data.Parse(node_data_set.text.c_str()); assert(current_node_data.IsArray()); if (api_version == 1) { - for (auto& node : current_node_data.GetArray()) { + for (auto &node : current_node_data.GetArray()) { rapidjson::Value insert(node, json_alloc); kernel_status_result_array.PushBack(insert, json_alloc); } } else if (api_version == 2) { sim_id = current_node_data["simId"]; - for (auto& node : current_node_data["nodes"].GetArray()) { + for (auto &node : current_node_data["nodes"].GetArray()) { rapidjson::Value insert(node, json_alloc); kernel_status_result_array.PushBack(insert, json_alloc); } @@ -305,20 +309,20 @@ crow::response NodesById(int api_version, int node_id) { return {DocumentToString(result_doc)}; } -rapidjson::Value GetNodeIds(rapidjson::MemoryPoolAllocator<>& json_alloc) { +rapidjson::Value GetNodeIds(rapidjson::MemoryPoolAllocator<> &json_alloc) { auto node_data_sets = GetAccessNodeRequests( ServerConfig::GetInstance().request_nest_urls, "/nodes"); rapidjson::Value node_array(rapidjson::kArrayType); - for (auto& node_data_set : node_data_sets) { + for (auto &node_data_set : node_data_sets) { rapidjson::Document current_node_data; current_node_data.Parse(node_data_set.text.c_str()); - spdlog::error(node_data_set.text.c_str()); + // spdlog::error(node_data_set.text.c_str()); assert(current_node_data.IsArray()); - for (auto& node : current_node_data.GetArray()) { + for (auto &node : current_node_data.GetArray()) { rapidjson::Value insert(node.GetObject()[json_strings::kNodeId], json_alloc); node_array.PushBack(node.GetObject()[json_strings::kNodeId], json_alloc); @@ -327,23 +331,23 @@ rapidjson::Value GetNodeIds(rapidjson::MemoryPoolAllocator<>& json_alloc) { return node_array; } -rapidjson::Value GetNodeIdsV2(rapidjson::MemoryPoolAllocator<>& json_alloc) { +rapidjson::Value GetNodeIdsV2(rapidjson::MemoryPoolAllocator<> &json_alloc) { auto node_data_sets = GetAccessNodeRequests( ServerConfig::GetInstance().request_nest_urls, "/nodes"); rapidjson::Value node_array(rapidjson::kArrayType); rapidjson::Value sim_id; - for (auto& node_data_set : node_data_sets) { + for (auto &node_data_set : node_data_sets) { rapidjson::Document current_node_data; current_node_data.Parse(node_data_set.text.c_str()); - spdlog::error(node_data_set.text.c_str()); + // spdlog::error(node_data_set.text.c_str()); sim_id = current_node_data["simId"]; assert(current_node_data.IsArray()); - for (auto& node : current_node_data["nodes"].GetArray()) { + for (auto &node : current_node_data["nodes"].GetArray()) { rapidjson::Value insert(node.GetObject()[json_strings::kNodeId], json_alloc); node_array.PushBack(node.GetObject()[json_strings::kNodeIds], json_alloc); @@ -369,4 +373,4 @@ crow::response NodeIdEndpoint(int api_version) { return {DocumentToString(node_result)}; } -} // namespace insite +} // namespace insite diff --git a/access-node/access_node/nest/spike.cpp b/access-node/access_node/src/nest/spike_container.cpp similarity index 99% rename from access-node/access_node/nest/spike.cpp rename to access-node/access_node/src/nest/spike_container.cpp index f75ae763..df7d4159 100644 --- a/access-node/access_node/nest/spike.cpp +++ b/access-node/access_node/src/nest/spike_container.cpp @@ -1,13 +1,13 @@ -#include "spike.h" #include "flatbuffers/base.h" #include "flatbuffers/flatbuffer_builder.h" #include "flatbuffers/vector.h" -#include "jsonStrings.h" #include "pdqsort.h" #include "spdlog/spdlog.h" #include <algorithm> #include <exception> #include <iterator> +#include <nest/json_strings.h> +#include <nest/spike_container.h> #include <rapidjson/document.h> #include <rapidjson/encodings.h> #include <rapidjson/stringbuffer.h> diff --git a/access-node/access_node/nest/spikedetector.cpp b/access-node/access_node/src/nest/spikerecorders.cpp similarity index 80% rename from access-node/access_node/nest/spikedetector.cpp rename to access-node/access_node/src/nest/spikerecorders.cpp index 1aca00b4..89e0bd01 100644 --- a/access-node/access_node/nest/spikedetector.cpp +++ b/access-node/access_node/src/nest/spikerecorders.cpp @@ -1,13 +1,13 @@ #include "spikedetector.h" +#include <nest/json_strings.h> #include <utility> -#include "jsonStrings.h" namespace insite { Spikerecorder::Spikerecorder() {} -Spikerecorder::Spikerecorder(const rapidjson::Value& document) +Spikerecorder::Spikerecorder(const rapidjson::Value &document) : spikerecorder_id(document[json_strings::kSpikerecorderId].GetUint64()) { auto json_nodes = document[json_strings::kNodeIds].GetArray(); nodes.resize(json_nodes.Size()); @@ -16,7 +16,7 @@ Spikerecorder::Spikerecorder(const rapidjson::Value& document) } } -Spikerecorder::Spikerecorder(const rapidjson::Value& document, +Spikerecorder::Spikerecorder(const rapidjson::Value &document, std::string sim_id) : sim_id(std::move(sim_id)), spikerecorder_id(document[json_strings::kSpikerecorderId].GetUint64()) { @@ -30,7 +30,7 @@ Spikerecorder::Spikerecorder(const rapidjson::Value& document, Spikerecorder::~Spikerecorder() {} void Spikerecorder::WriteToJson( - rapidjson::Writer<rapidjson::StringBuffer>& writer) const { + rapidjson::Writer<rapidjson::StringBuffer> &writer) const { writer.StartObject(); writer.Key("spikerecorderId"); @@ -47,8 +47,8 @@ void Spikerecorder::WriteToJson( void Spikerecorder::ParseFromJson(rapidjson::Document input) {} -std::ostream& operator<<(std::ostream& ostream, - const Spikerecorder& spikerecorder) { +std::ostream &operator<<(std::ostream &ostream, + const Spikerecorder &spikerecorder) { ostream << "Spikerecorder: {" << std::endl; ostream << "spikerecorderId: " << spikerecorder.spikerecorder_id << std::endl; ostream << ", nodes: ["; @@ -60,4 +60,4 @@ std::ostream& operator<<(std::ostream& ostream, return ostream; } -} // namespace insite +} // namespace insite diff --git a/access-node/access_node/nest/nestSpikes.cpp b/access-node/access_node/src/nest/spikes.cpp similarity index 92% rename from access-node/access_node/nest/nestSpikes.cpp rename to access-node/access_node/src/nest/spikes.cpp index 7267492a..239725b3 100644 --- a/access-node/access_node/nest/nestSpikes.cpp +++ b/access-node/access_node/src/nest/spikes.cpp @@ -1,9 +1,12 @@ +#include <config.h> + +#include "query_params.h" #include "spdlog/common.h" #include "spdlog/spdlog.h" -#include <config.h> +#include "tl/optional.hpp" #include <cstdint> #include <limits> -#include <nest/nestSpikes.h> +#include <nest/spikes.h> #include <unordered_set> namespace insite { @@ -59,8 +62,10 @@ crow::response NestGetSpikes(const SpikeParameter ¶meter, int api_version) { rapidjson::Writer<rapidjson::StringBuffer> writer(buffer); spdlog::stopwatch stopwatch; + SpikeParameter params_without_skip = parameter; + params_without_skip.skip = tl::nullopt; std::string query_string = - BuildQueryString("/spikes", parameter.GetParameterVector()); + BuildQueryString("/spikes", params_without_skip.GetParameterVector()); auto spike_data_sets = GetAccessNodeRequests( ServerConfig::GetInstance().request_nest_urls, query_string, api_version); @@ -75,7 +80,7 @@ crow::response NestGetSpikes(const SpikeParameter ¶meter, int api_version) { rapidjson::Document document; document.Parse(spike_data_set.text.c_str()); - spdlog::error(spike_data_set.text.c_str()); + // spdlog::error(spike_data_set.text.c_str()); if (api_version == 1) { spikes.AddSpikesFromJson(document); diff --git a/access-node/access_node/nest/nestVersion.cpp b/access-node/access_node/src/nest/version.cpp similarity index 92% rename from access-node/access_node/nest/nestVersion.cpp rename to access-node/access_node/src/nest/version.cpp index e3c63574..36b3552c 100644 --- a/access-node/access_node/nest/nestVersion.cpp +++ b/access-node/access_node/src/nest/version.cpp @@ -1,19 +1,19 @@ +#include "rapidjson/document.h" +#include "rapidjson/stringbuffer.h" #include <config.h> -#include <nest/nestVersion.h> -#include <spdlog/spdlog.h> -#include <utilityFunctions.h> #include <fstream> #include <iterator> +#include <nest/version.h> #include <optional> +#include <spdlog/spdlog.h> #include <unordered_set> +#include <utility_functions.h> #include <vector> -#include "rapidjson/document.h" -#include "rapidjson/stringbuffer.h" namespace insite { -rapidjson::Value NestGetSimulationTimeInfo( - rapidjson::MemoryPoolAllocator<> json_alloc, - int api_version) { +rapidjson::Value +NestGetSimulationTimeInfo(rapidjson::MemoryPoolAllocator<> json_alloc, + int api_version) { // get request results back and store in array auto sim_time_infos = GetAccessNodeRequests(ServerConfig::GetInstance().request_nest_urls, @@ -26,7 +26,7 @@ rapidjson::Value NestGetSimulationTimeInfo( rapidjson::Value sim_id; // loop through all kernelStatus-data-sets and create a new object for each - for (const auto& sim_time_info : sim_time_infos) { + for (const auto &sim_time_info : sim_time_infos) { std::string json_string = sim_time_info.text; // create rapidjson-document for current kernelStatus-data-set and parse @@ -65,7 +65,7 @@ rapidjson::Value NestGetSimulationTimeInfo( return result; } -rapidjson::Value NestGetVersion(rapidjson::MemoryPoolAllocator<>& json_alloc) { +rapidjson::Value NestGetVersion(rapidjson::MemoryPoolAllocator<> &json_alloc) { // get request results back and store in array auto nest_version_infos = GetAccessNodeRequests( ServerConfig::GetInstance().request_nest_urls, "/version"); @@ -74,7 +74,7 @@ rapidjson::Value NestGetVersion(rapidjson::MemoryPoolAllocator<>& json_alloc) { rapidjson::Value insite_version; // loop through all kernelStatus-data-sets and create a new object for each - for (auto& nest_version_info : nest_version_infos) { + for (auto &nest_version_info : nest_version_infos) { std::string json_string = nest_version_info.text; rapidjson::Document current_version_info; @@ -140,4 +140,4 @@ crow::response Version() { return {DocumentToString(result_doc)}; } -} // namespace insite +} // namespace insite diff --git a/access-node/access_node/utilityFunctions.cpp b/access-node/access_node/src/utility_functions.cpp similarity index 96% rename from access-node/access_node/utilityFunctions.cpp rename to access-node/access_node/src/utility_functions.cpp index 6e0572b5..2faebd2d 100644 --- a/access-node/access_node/utilityFunctions.cpp +++ b/access-node/access_node/src/utility_functions.cpp @@ -1,3 +1,5 @@ +#include "config.h" + #include "cpr/session.h" #include <cpr/async.h> #include <cpr/cpr.h> @@ -15,12 +17,11 @@ #include "rapidjson/stringbuffer.h" #include "rapidjson/writer.h" -#include "config.h" // #include "jsonParameters.h" -#include "jsonStrings.h" -#include "queryStringBuilder.h" -#include "spike.h" -#include "utilityFunctions.h" +#include <nest/json_strings.h> +#include <nest/spike_container.h> +#include <query_string_builder.h> +#include <utility_functions.h> namespace insite { @@ -112,7 +113,7 @@ CprResponseVec GetAccessNodeRequests(const std::vector<std::string> &urls, multiperform.AddSession(sessions.back()); SPDLOG_DEBUG( "[GetAccessNodeRequests] Added {} to the multiperform request.", - url + version + postfix); + url + versioned_postfix); } // Add sessions to the MultiPerform return multiperform.Get(); diff --git a/access-node/access_node/websocket_sender.cpp b/access-node/access_node/src/websocket_sender.cpp similarity index 100% rename from access-node/access_node/websocket_sender.cpp rename to access-node/access_node/src/websocket_sender.cpp diff --git a/access-node/access_node/websocket_server.cpp b/access-node/access_node/src/websocket_server.cpp similarity index 99% rename from access-node/access_node/websocket_server.cpp rename to access-node/access_node/src/websocket_server.cpp index 735d2b42..8b7377df 100644 --- a/access-node/access_node/websocket_server.cpp +++ b/access-node/access_node/src/websocket_server.cpp @@ -1,9 +1,9 @@ #include "websocket_server.h" -#include "nest_handler.h" #include "spdlog/spdlog.h" -#include "tvb_handler.h" #include "websocketpp/frame.hpp" #include <cstdint> +#include <nest/handler.h> +#include <tvb/handler.h> namespace insite { diff --git a/access-node/access_node/tvb_handler.cpp b/access-node/access_node/tvb/handler.cpp similarity index 82% rename from access-node/access_node/tvb_handler.cpp rename to access-node/access_node/tvb/handler.cpp index a564ebdc..3e6eb7aa 100644 --- a/access-node/access_node/tvb_handler.cpp +++ b/access-node/access_node/tvb/handler.cpp @@ -1,12 +1,12 @@ -#define SPDLOG_ACTIVE_LEVEL SPDLOG_LEVEL_TRACE +#include <insite_defines.h> -#include "tvb_handler.h" #include "opcodes.h" #include "spdlog/spdlog.h" #include <chrono> #include <cstdint> #include <spdlog/fmt/bin_to_hex.h> #include <spdlog/fmt/ranges.h> +#include <tvb/handler.h> using namespace std::chrono_literals; namespace insite { @@ -59,6 +59,15 @@ void TvbHandler::Consumer() { SPDLOG_TRACE("New TVB Data"); ParseDataPacket(data); break; + case Opcode::kSimInfo: + SPDLOG_TRACE("Parse Sim Info"); + ParseSimInfo(data); + break; + + case Opcode::kSimInfoReturn: + SPDLOG_TRACE("Parse Sim Info Return"); + ParseSimInfoReturn(data); + break; default: SPDLOG_ERROR("[TVB Handler] Unknown opcode: " + std::to_string(opcode) + " Message: {}", @@ -70,6 +79,17 @@ void TvbHandler::Consumer() { } SPDLOG_DEBUG("Finished TvbHandler Consumer Thread"); } +void TvbHandler::ParseSimInfo(const std::string &payload) { + sim_info.Parse(payload.c_str() + 1); + // spdlog::error(payload); +} + +void TvbHandler::ParseSimInfoReturn(const std::string &payload) { + // spdlog::error("ParseSimInfoReturn: {}", payload); + // sim_info.Parse(payload.c_str() + 1); + sim_info_promise.set_value(payload.substr(1)); + // spdlog::error(payload); +} void TvbHandler::ParseNewMonitorPacket(const std::string &payload) { rapidjson::Document doc; @@ -101,11 +121,12 @@ void TvbHandler::ParseDataPacket(const std::string &payload) { std::memcpy(&header, payload.data() + sizeof(Opcode), sizeof(header)); cursor += sizeof(DataHeader); // SPDLOG_DEBUG( - // "Header: internalId: {}, time: {}, type: {}, dim1: {}, dim2: {}, dim3: + // "Header: internalId: {}, time: {}, type: {}, dim1: {}, dim2: {}, + // dim3: // " // "{}", - // header.internal_id, header.time, header.type, header.dim1, header.dim2, - // header.dim3); + // header.internal_id, header.time, header.type, header.dim1, + // header.dim2, header.dim3); if (header.type == DataType::kDouble) { const auto *dat = reinterpret_cast<const double *>(payload.data() + cursor); double_monitors_[header.internal_id].data.PushBack( diff --git a/access-node/access_node/tvb/monitor.cpp b/access-node/access_node/tvb/monitor.cpp new file mode 100644 index 00000000..f0a3c05c --- /dev/null +++ b/access-node/access_node/tvb/monitor.cpp @@ -0,0 +1 @@ +#include <tvb/monitor.h> diff --git a/access-node/access_node/tvbMonitor.cpp b/access-node/access_node/tvbMonitor.cpp deleted file mode 100644 index b20f6b27..00000000 --- a/access-node/access_node/tvbMonitor.cpp +++ /dev/null @@ -1,2 +0,0 @@ -#include "tvbMonitor.h" - -- GitLab