Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions bazel_common/score_modules_target_sw.MODULE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -94,3 +94,14 @@ git_override(
],
remote = "https://github.com/eclipse-score/time.git",
)

bazel_dep(name = "score_config_management")
git_override(
module_name = "score_config_management",
commit = "49f26b741defe9a7416a75fa8840098f4d28b02e",
patch_strip = 1,
patches = [
"patches/config_management/001-fix-communication-api-and-remove-targets.patch",
],
remote = "https://github.com/eclipse-score/config_management.git",
)
20 changes: 20 additions & 0 deletions known_good.json
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,26 @@
"cpp"
]
}
},
"score_config_management": {
"repo": "https://github.com/eclipse-score/config_management.git",
"hash": "49f26b741defe9a7416a75fa8840098f4d28b02e",
"bazel_patches": [
"patches/config_management/001-fix-communication-api-and-remove-targets.patch"
],
"metadata": {
"code_root_path": "//score/config_management/...",
"exclude_test_targets": [
"//score/config_management/config_daemon/code/factory/details:unit_test_mw_com",
"//score/config_management/config_provider/code/config_provider/factory:unit_tests_mw_com",
"//score/config_management/dependability:config_daemon_component",
"//score/config_management/dependability:config_management",
"//score/config_management/dependability:config_provider_component"
],
"langs": [
"cpp"
]
}
}
},
"tooling": {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,174 @@
--- a/score/config_management/config_daemon/code/services/details/mw_com/internal_config_provider_service_impl.cpp
+++ b/score/config_management/config_daemon/code/services/details/mw_com/internal_config_provider_service_impl.cpp
@@ -110,28 +110,26 @@ void InternalConfigProviderService::StartService()
{
mw::log::LogDebug() << "InternalConfigProviderService::" << __func__;
auto handler =
- [this](mw_com_icp_types::ParameterSetName parameter_set_name) -> mw_com_icp_types::ParameterSetContent {
+ [this](mw_com_icp_types::ParameterSetContent& result,
+ const mw_com_icp_types::ParameterSetName& parameter_set_name) {
// Truncate at first null terminator to avoid trailing nulls
auto* null_terminator = std::find(parameter_set_name.begin(), parameter_set_name.end(), '\0');
std::string param_name{parameter_set_name.begin(), null_terminator};
auto param_set_result = internal_config_provider_service_reactor_->GetParameterSet(param_name);
- mw_com_icp_types::ParameterSetContent ret_val{};

if (param_set_result.has_value() == true)
{
const auto& value = param_set_result.value();
- // Only copy actual content, limiting to ret_val size
- const std::size_t copy_size = std::min(value.size(), ret_val.size());
- std::copy_n(value.begin(), copy_size, ret_val.begin());
+ // Only copy actual content, limiting to result size
+ const std::size_t copy_size = std::min(value.size(), result.size());
+ std::copy_n(value.begin(), copy_size, result.begin());
}
else
{
logger_.LogError() << "InternalConfigProviderService::" << __func__ << "Key not found";
constexpr std::string_view kErrorMsg = "Key not found";
- std::copy(kErrorMsg.begin(), kErrorMsg.end(), ret_val.begin());
+ std::copy(kErrorMsg.begin(), kErrorMsg.end(), result.begin());
}
-
- return ret_val;
};
std::ignore = icp_skeleton_.get_parameterset.RegisterHandler(std::move(handler));
const auto offer_service_result = icp_skeleton_.OfferService();
--- a/score/config_management/config_provider/BUILD
+++ b/score/config_management/config_provider/BUILD
@@ -14,13 +14,6 @@ alias(
visibility = ["//visibility:public"],
)

-cc_library(
- name = "config_provider_factory_impl",
- tags = ["FUSA"],
- visibility = ["//visibility:public"],
- deps = ["//score/config_management/config_provider/code/config_provider/factory:factory_socal_r20_11"],
-)
-
cc_library(
name = "config_provider_mw_com",
tags = ["FUSA"],
@@ -28,12 +21,6 @@ cc_library(
deps = ["//score/config_management/config_provider/code/config_provider/factory:factory_mw_com"],
)

-alias(
- name = "config_provider_factory_for_unit_test",
- actual = "//score/config_management/config_provider/code/config_provider/factory:factory_socal_r20_11_for_unit_tests",
- visibility = ["//visibility:public"],
-)
-
cc_unit_test_suites_for_host_and_qnx(
name = "unit_tests",
test_suites_from_sub_packages = [
@@ -45,14 +32,6 @@ cc_unit_test_suites_for_host_and_qnx(
visibility = ["//score/config_management:__pkg__"],
)

-test_suite(
- name = "component_tests",
- tests = [
- "//score/config_management/config_provider/test/sct:component_tests",
- ],
- visibility = ["//score/config_management:__pkg__"],
-)
-
clang_tidy_extra_checks(
name = "clang_tidy_extra_checks",
extra_features = [
--- a/score/config_management/config_provider/code/config_provider/details/config_provider_impl.cpp
+++ b/score/config_management/config_provider/code/config_provider/details/config_provider_impl.cpp
@@ -46,7 +46,7 @@ std::string GetParameterSetValue(mw::log::Logger& logger, const ParameterSet& pa
} // namespace

ConfigProviderImpl::ConfigProviderImpl(
- mw::service::OptionalProxyData<IInternalConfigProvider> proxy_data,
+ mw::service::ProxyFuture<std::unique_ptr<IInternalConfigProvider>> proxy_future,
score::cpp::stop_token user_stop_token,
score::cpp::pmr::memory_resource* const memory_resource,
score::cpp::optional<std::size_t> max_samples_limit,
@@ -78,22 +78,23 @@ ConfigProviderImpl::ConfigProviderImpl(
score::cpp::ignore = proxy_available_thread_.emplace(
[this](const score::cpp::stop_token jthread_stop_token,
decltype(callback) notification_callback,
- decltype(proxy_data) pd) mutable {
- auto proxy_holder = pd.GetProxyFuture().Get(jthread_stop_token);
- pd.StopServiceDiscovery();
- if (proxy_holder.has_value())
+ decltype(proxy_future) pf) mutable {
+ auto proxy_holder = pf.Get(jthread_stop_token);
+ if (proxy_holder.has_value() && (proxy_holder.value() != nullptr))
{
logger_.LogInfo() << "ProxyAvailableThread: InternalConfigProvider proxy is connected";
SetupInternalConfigProvider(
- std::move(proxy_holder).value(), std::move(notification_callback), jthread_stop_token);
+ std::shared_ptr<IInternalConfigProvider>(std::move(proxy_holder).value()),
+ std::move(notification_callback),
+ jthread_stop_token);
}
else
{
- logger_.LogInfo() << "ProxyAvailableThread: No proxy found: " << proxy_holder.error().Message();
+ logger_.LogInfo() << "ProxyAvailableThread: No proxy found";
}
},
std::move(callback),
- std::move(proxy_data));
+ std::move(proxy_future));

score::cpp::ignore = stop_callback_.emplace(user_stop_token, [this]() {
score::cpp::ignore = proxy_available_thread_->request_stop();
--- a/score/config_management/config_provider/code/config_provider/details/config_provider_impl.h
+++ b/score/config_management/config_provider/code/config_provider/details/config_provider_impl.h
@@ -24,6 +24,7 @@

#include "score/concurrency/condition_variable.h"
#include "score/mw/service/proxy_data.h"
+#include "score/mw/service/proxy_future.h"

#include <score/jthread.hpp>
#include <score/memory.hpp>
@@ -87,7 +88,7 @@ class ConfigProviderImpl final : public ConfigProvider
bool IsAwaitingProxyConnection() const noexcept;

ConfigProviderImpl(
- mw::service::OptionalProxyData<IInternalConfigProvider> proxy_data,
+ mw::service::ProxyFuture<std::unique_ptr<IInternalConfigProvider>> proxy_future,
score::cpp::stop_token user_stop_token,
score::cpp::pmr::memory_resource* const memory_resource,
score::cpp::optional<std::size_t> max_samples_limit,
--- a/score/config_management/config_provider/code/config_provider/details/config_provider_impl_test.cpp
+++ b/score/config_management/config_provider/code/config_provider/details/config_provider_impl_test.cpp
@@ -182,7 +182,7 @@ class ConfigProviderTest : public ::testing::Test
auto CreateConfigProviderWithAvailableCallback(IsAvailableNotificationCallback callback)
{
return std::make_unique<ConfigProviderImpl>(
- mw::service::OptionalProxyData<IInternalConfigProvider>{promise_.GetInterruptibleFuture().value()},
+ promise_.GetInterruptibleFuture().value(),
stop_source_.get_token(),
score::cpp::pmr::get_default_resource(),
score::cpp::nullopt, // default max_samples_limit
@@ -196,7 +196,7 @@ class ConfigProviderTest : public ::testing::Test
IsAvailableNotificationCallback callback)
{
return std::make_unique<ConfigProviderImpl>(
- mw::service::OptionalProxyData<IInternalConfigProvider>{promise_.GetInterruptibleFuture().value()},
+ promise_.GetInterruptibleFuture().value(),
stop_source_.get_token(),
score::cpp::pmr::get_default_resource(),
score::cpp::nullopt,
--- a/score/config_management/config_provider/code/config_provider/factory/factory_mw_com.h
+++ b/score/config_management/config_provider/code/config_provider/factory/factory_mw_com.h
@@ -182,7 +182,8 @@ class ConfigProviderFactory final
logger_.LogDebug() << "ConfigProviderFactory:: Create ConfigProviderImpl";
auto config_provider = score::cpp::pmr::make_unique<ConfigProviderImpl>(
memory_resource,
- proxy_container.template Extract<mw::service::Optional<IInternalConfigProvider>>(),
+ static_cast<mw::service::ProxyFuture<std::unique_ptr<IInternalConfigProvider>>>(
+ proxy_container.template Extract<mw::service::Optional<IInternalConfigProvider>>()),
token,
memory_resource,
max_samples_limit,
Empty file.
Loading