操作
機能 #3408
完了⑨ サービスポートのダイレクト接続機能
開始日:
2015/12/22
期日:
2016/03/25
進捗率:
100%
予定工数:
30.00時間
説明
同一プロセス内のデータポート接続において、required i/fがprovided i/fを呼び出すのに、オブジェクトリファレンス経由ではなく、マーシャリングをバイパスサーバントを直接呼ぶようにする機能を実装すること。
miyamoto さんがほぼ9年前に更新
CorbaConsumerクラスの_ptr関数を変更した。
_ptr関数の動作の手順を説明する。
後述するが、reference_to_servant関数でサーバントが取得できたときに以下の変数_sevに格納する。
このため_sevにサーバントが既に格納している場合は_sevを返す。if self._sev is not None:
return self._sev
以下のコードではオブジェクトリファレンスをサーバントに変換し、変換に成功した場合は_sevに格納して返している。変換に失敗した場合は従来通りオブジェクトリファレンスを返す。try:
mgr = OpenRTM_aist.Manager.instance()
self._sev = mgr._poa.reference_to_servant(self._var)
if self._sev is not None:
return self._sev
except:
return self._var
変数宣言のためにコンストラクタにもコードを追加した。
操作