この例題は、ちょっとクリーンアップされるかもしれませんが、私の例のスニペットでは、CompAはcompB_connectionとcompC_connectionの2つの出力ポートを持っています。 compBとcompCのリソースポート(lollipopポートとも呼ばれる)に接続できます。これは、リソースAPIから継承しているため、コンポーネント自体に直接接続しています。これにより、start、stop、configure、queryなどのコンポーネントのメソッドにアクセスできます。完全なリストについては、idlファイルを参照してください。
CompBとCompCの両方にidというスキルのプロパティがあります。クエリAPIを使用して、これらのプロパティの値を照会することができます。
CompB Skills: nunchuck skills
CompC Skills: bow hunting skills
any_to_string方法は、コアフレームワークにprop_helpers.cppで見つかりました:今、私たちはCOMPBとCOMPCまでのコンパを接続して、波形、またはサンドボックスを起動したときに、我々は次の出力を得る
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;
}
コード;ヘッダーファイルにはおそらくヘルパー関数があり、これはより良い修正となるでしょう。
スニペットの作成を支援するには、これらのコンポーネントがどの言語で記述されているかを教えてください。 –
こんにちはYoussef、これらのコンポーネントは、cppで書かれています。 – KKsan