覆盖配置不适用于初始配置

Overriding configure does not work for the initial configuration

我需要覆盖波形上的 configure() 并且我尝试按照手册中的建议进行操作,方法是覆盖我的 .[h,cpp] 中的 PropertySet_impl::configure 但调用 PropertySet_impl::configure在我的覆盖中。当我使用 python 脚本配置我的组件时它起作用,但它似乎没有被 DomainManager 在域配置文件中使用 .prf.xml 进行初始配置调用。

你是否以其他方式发送这个初始配置,有没有办法我也可以覆盖这些?

尝试对需要自定义配置逻辑的属性使用 setPropertyConfigureImpl,而不是重写配置。我相信这是在初始调用设置属性时调用的。

从 REDHAWK 2.0 开始,组件支持一种新方法 initializeProperties(),该方法在创建组件时先于调用 initialize() 调用一次。任何种类 "property" 的属性都通过此调用获得其初始值,如果提供则使用覆盖值。遗留 "configure" 种类的属性仍然通过 configure() 调用在 initialize() 之后进行初始化。

如果为您的属性设置配置函数就足够了,我鼓励您采用这种方法。如果您希望它们在初始化时被调用,您需要在 C++ 构造函数中设置它们,而不是 REDHAWK constructor() 方法。

根据你的问题,属性听众可能不适合; 属性 更改通知不是由 initializeProperties() 触发的,仅由 configure() 触发。注意C++接口是addPropertyListener(); registerPropertyListener() 是一种 CORBA 方法,支持 属性 更改的外部通知。