Question: Why is configuration plugin bypassed when ENABLE_MULTIPLE_ROUTING_MANAGERS is enabled?
- Dominant language
- C++
- Stars
- 1.4k
- Forks
- 826
- PR merge metrics
- No merged PRs in 30d
Description
## Question
When `ENABLE_MULTIPLE_ROUTING_MANAGERS` is enabled, the configuration plugin is bypassed and `configuration_impl` is instantiated directly in `application_impl.cpp`:
```cpp
#ifndef VSOMEIP_ENABLE_MULTIPLE_ROUTING_MANAGERS
auto its_plugin = plugin_manager::get()->get_plugin(plugin_type_e::CONFIGURATION_PLUGIN, VSOMEIP_CFG_LIBRARY);
// ... uses plugin to get configuration
#else
configuration_ =
std::dynamic_pointer_cast(std::make_shared(configuration_path));
// ... loads configuration directly
#endif
```
Additionally, the `vsomeip3-cfg` library is not built at all when this option is enabled (CMakeLists.txt lines 294-296).
## What we're trying to understand
Why does the plugin architecture break down for multiple routing managers? Is this an implementation quirk, or is there an intentional design reason for this behavior?
## Context
I'm trying to extend the configuration library for a specific use case. The plugin design works great for this - I can provide a custom configuration implementation via the plugin interface. However, it appears I cannot use this approach if I also need multiple routing managers enabled.
I could try enabling both features myself, but I want to understand what design constraint or edge case this was guarding against before doing so.
Contributor guide
Research direction
Read the conditional configuration setup in application_impl.cpp and the vsomeip3-cfg build logic in CMakeLists.txt around lines 294-296. Trace how the configuration plugin is loaded versus how configuration_impl is instantiated when ENABLE_MULTIPLE_ROUTING_MANAGERS is enabled; done means documenting the design constraint or confirming whether the bypass can support custom configuration implementations.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- networking
- Issue type
- Refactor
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100