diff --git a/services/tunnelbroker/src/libcpp/Tunnelbroker.cpp b/services/tunnelbroker/src/libcpp/Tunnelbroker.cpp new file mode 100644 index 000000000..2e551be15 --- /dev/null +++ b/services/tunnelbroker/src/libcpp/Tunnelbroker.cpp @@ -0,0 +1,37 @@ +#include "Tunnelbroker.h" +#include "AmqpManager.h" +#include "AwsTools.h" +#include "ConfigManager.h" +#include "DatabaseManager.h" +#include "GlobalTools.h" +#include "Tools.h" + +#include "rust/cxx.h" + +void initialize() { + comm::network::tools::InitLogging("tunnelbroker"); + comm::network::config::ConfigManager::getInstance().load(); + Aws::InitAPI({}); + // List of AWS DynamoDB tables to check if they are created and can be + // accessed before any AWS API methods + const std::list tablesList = { + comm::network::config::ConfigManager::getInstance().getParameter( + comm::network::config::ConfigManager::OPTION_DYNAMODB_SESSIONS_TABLE), + comm::network::config::ConfigManager::getInstance().getParameter( + comm::network::config::ConfigManager:: + OPTION_DYNAMODB_SESSIONS_VERIFICATION_TABLE), + comm::network::config::ConfigManager::getInstance().getParameter( + comm::network::config::ConfigManager:: + OPTION_DYNAMODB_SESSIONS_PUBLIC_KEY_TABLE), + comm::network::config::ConfigManager::getInstance().getParameter( + comm::network::config::ConfigManager:: + OPTION_DYNAMODB_MESSAGES_TABLE)}; + for (const std::string &table : tablesList) { + if (!comm::network::database::DatabaseManager::getInstance() + .isTableAvailable(table)) { + throw std::runtime_error( + "Error: AWS DynamoDB table '" + table + "' is not available"); + } + }; + comm::network::AmqpManager::getInstance().init(); +} diff --git a/services/tunnelbroker/src/libcpp/Tunnelbroker.h b/services/tunnelbroker/src/libcpp/Tunnelbroker.h new file mode 100644 index 000000000..18ea8f219 --- /dev/null +++ b/services/tunnelbroker/src/libcpp/Tunnelbroker.h @@ -0,0 +1,5 @@ +#pragma once + +#include "rust/cxx.h" + +void initialize();