操作
機能 #3393
未完了⑨ サービスポートのダイレクト接続機能
開始日:
2015/12/11
期日:
進捗率:
100%
予定工数:
説明
同一プロセス内のデータポート接続において、required i/fがprovided i/fを呼び出すのに、オブジェクトリファレンス経由ではなく、マーシャリングをバイパスしサーバントを直接呼ぶようにする機能を実装すること。
操作
100%
説明
同一プロセス内のデータポート接続において、required i/fがprovided i/fを呼び出すのに、オブジェクトリファレンス経由ではなく、マーシャリングをバイパスしサーバントを直接呼ぶようにする機能を実装すること。
public OBJECT_TYPE _ptr() {
if(this.m_sev != null){
return this.m_sev;
}
if(this.m_var != null){
try{
ORB orb = ORBUtil.getOrb();
Object obj = orb.resolve_initial_references("RootPOA");
POA poa = POAHelper.narrow(obj);
if (poa == null) {
return this.m_var;
}
m_sev = (OBJECT_TYPE)(poa.reference_to_servant((Object)m_var));
if(m_sev != null){
return this.m_sev;
}
}
catch(Exception ex){
return this.m_var;
}
}
return this.m_var;
}
OpenRTM.PortStatus ret = _ptr().put(output_stream.getByteArray());
OpenRTM.PortStatus ret = ((OpenRTM.InPortCdrOperations)_ptr()).put(output_stream.getByteArray());
public OBJECT_TYPE _ptr(boolean ref) {
if(ref) {
return this.m_var;
}
return this._ptr();
}
ユーザが実装する際に、明示的なキャストをするのを忘れた場合、例外が発生することがあるので、実装をしない方向で進める。idlコンパイラのオプションを調査してみる(2017/9/4 のミーティング)
idlコンパイル(idlj)のオプションで、サーバントを使用する(ショートカット)機能がないか、調査しましたが、ありませんでした。
修正をロールバックしました。