Skip to content

Question: Why is configuration plugin bypassed when ENABLE_MULTIPLE_ROUTING_MANAGERS is enabled? #1015

@sgmenon

Description

@sgmenon

Question

When ENABLE_MULTIPLE_ROUTING_MANAGERS is enabled, the configuration plugin is bypassed and configuration_impl is instantiated directly in application_impl.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<configuration>(std::make_shared<vsomeip_v3::cfg::configuration_impl>(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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions