2017-08-30 70 views
0

我需要覆蓋我的波形上的configure(),並試圖按照手冊中的建議操作,方法是在我的。[h,cpp]中重寫PropertySet_impl :: configure,但調用在我的覆蓋PropertySet_impl ::配置。它在我使用python腳本配置我的組件時起作用,但它似乎並未被DomainManager使用.prf.xml在域配置文件中進行初始配置調用。覆蓋配置不適用於初始配置

您是否以其他方式發送此初始配置,並且有沒有辦法可以覆蓋這些配置?

回答

1

嘗試使用setPropertyConfigureImpl來獲取需要自定義配置邏輯而不是重寫配置的屬性。我相信這是在設置屬性的初始調用時調用的。

+0

謝謝。我沒有注意到2.1中的這個新功能,但它在2.1手冊中有描述。我希望允許RedHawk管理配置,只是做一些額外的處理,但由於它沒有看到初始配置,我會嘗試setPropertyConfigureImpl或可能registerPropertyListener。其中之一應該讓我做我需要的。 –

1

從REDHAWK 2.0開始,組件支持在調用initialize()之前創建組件時調用一次的新方法initializeProperties()。類型「屬性」的任何屬性通過此調用被賦予它們的初始值,如果提供的話使用覆蓋值。傳統的「configure」類屬性仍然通過initialize()後面的configure()調用進行初始化。

如果爲你的屬性設置配置函數就足夠了,我會鼓勵這種方法。如果您希望在初始化時調用它們,您將需要在C++構造函數中設置它們,但不是REDHAWK構造函數()方法。

根據你的問題,屬性監聽器可能不適合;屬性更改通知不是由initializeProperties()觸發的,只是由configure()觸發的。請注意,C++接口是addPropertyListener(); registerPropertyListener()是一種支持屬性更改的外部通知的CORBA方法。