這個例子或許可以得到清理一下,但在我的示例代碼片段,COMPA有兩個輸出端口,既與名稱compB_connection和compC_connection類型的資源。然後,我們可以連接到compB和compC的資源端口(也稱爲棒棒糖端口),該端口直接連接到組件本身,因爲它從資源API繼承。這使我們可以訪問組件上的方法,如啓動,停止,配置,查詢等。有關完整列表,請參閱idl文件。
CompB的和compc命令均與「術」的id屬性。我們可以使用查詢API來查詢這些屬性的值。
std::string CompA_i::any_to_string(CORBA::Any value) {
std::ostringstream result;
const char* tmp;
value >>= tmp;
result << tmp;
return result.str();
}
int CompA_i::serviceFunction() {
CF::Properties compB_props, compC_props;
compB_props.length(1);
compC_props.length(1);
compB_props[0].id = "skill";
compC_props[0].id = "skill";
compB_connection->query(compB_props);
compC_connection->query(compC_props);
std::cout << "CompB Skills: " << any_to_string(compB_props[0].value) << std::endl;
std::cout << "CompC Skills: " << any_to_string(compC_props[0].value) << std::endl;
return FINISH;
}
現在,當我們連接COMPA高達CompB的和compc命令和啓動波形,或沙箱我們得到以下的輸出:
CompB Skills: nunchuck skills
CompC Skills: bow hunting skills
的any_to_string方法在prop_helpers.cpp發現,在覈心框架碼;在某個頭文件中可能會有一個幫助函數,這將是一個更好的解決方案。
爲了幫助創建一個片段,你可以讓我知道這些組件寫入哪種語言? –
嗨Youssef,這些組件是用cpp編寫的。 – KKsan