Skip to content
Draft
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
1 change: 1 addition & 0 deletions score/mw/com/impl/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -877,6 +877,7 @@ cc_library(
"@score_baselibs//score/concurrency:long_running_threads_container",
"@score_baselibs//score/language/futurecpp",
"@score_baselibs//score/memory/shared:types",
"@score_baselibs//score/utils/meyer_singleton",
"@score_logging//score/mw/log",
],
)
Expand Down
9 changes: 4 additions & 5 deletions score/mw/com/impl/runtime.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -148,26 +148,25 @@ Runtime& Runtime::getInstanceInternal() noexcept
// Suppress "AUTOSAR C++14 A3-3-2" rule finding. This rule states: "Static and thread-local objects shall be
// constant-initialized.". This cannot be constexpr as the lambda function executes at runtime.
// coverity[autosar_cpp14_a3_3_2_violation]
static Runtime instance{([]() -> std::pair<Configuration, score::cpp::optional<TracingFilterConfig>> {
return singleton::MeyerSingleton<Runtime>::GetInstanceInitializedWithCallable([]() -> Runtime {
std::lock_guard<std::mutex> lock{mutex_};
runtime_initialization_locked_ = true;
if (!initialization_config_.has_value())
{
runtime::RuntimeConfiguration runtime_configuration{};
auto configuration = configuration::Parse(runtime_configuration.GetConfigurationPath().Native());
auto tracing_config = ParseTraceConfig(configuration);
return std::make_pair(std::move(configuration), std::move(tracing_config));
return Runtime{std::make_pair(std::move(configuration), std::move(tracing_config))};
}
else
{
auto tracing_config = ParseTraceConfig(initialization_config_.value());
auto configuration_pair =
std::make_pair(std::move(initialization_config_.value()), std::move(tracing_config));
initialization_config_.reset();
return configuration_pair;
return Runtime{std::move(configuration_pair)};
}
})()};
return instance;
});
}

Runtime::Runtime(std::pair<Configuration&&, score::cpp::optional<TracingFilterConfig>&&> configs)
Expand Down
2 changes: 0 additions & 2 deletions score/mw/com/impl/runtime.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,12 @@
#include "score/mw/com/impl/instance_specifier.h"
#include "score/mw/com/impl/service_discovery.h"
#include "score/mw/com/impl/tracing/configuration/tracing_filter_config.h"
#include "score/mw/com/impl/tracing/tracing_runtime.h"
#include "score/mw/com/runtime_configuration.h"

#include <score/assert.hpp>
#include <score/optional.hpp>
#include <score/span.hpp>

#include <atomic>
#include <memory>
#include <mutex>
#include <unordered_map>
Expand Down
Loading