ConnectorListener クラス
データポートの Connector において発生する各種イベントに対するコー
ルバックを実現するリスナクラスの基底クラス。
コアロジックがOutPortに対してデータ書き込み、InPort側でデータが取
得されるまでの間で発生する各種イベントをフックするコールバックを設
定することができる。なお、リスナークラスは2種類存在し、バッファフ
ルや送信時のコールバックで、その時点で有効なデータをファンクタの引
数として受け取る ConnectorDataListener であり、もう一方はデータエ
ンプティやバッファ読み込み時のタイムアウトなどデータが取得できない
場合などにコールされるファンクタの引数に何もとらならい
ConnecotorListener がある。
ConnectorListener クラスによって関連する動作をフックしたい場合、以
下の例のように、このクラスを継承し、コネクタの情報を引数に取る以下
のようなコールバックオブジェクトを定義し、データポートの適切なコー
ルバック設定関数からコールバックオブジェクトをセットする必要がある。
{@code
class MyListener extends ConnectorListener{
public MyListener(final String name){
m_name = name;
}
public ReturnCode operator(ConnectorBase.ConnectorInfo arg){
System.out.println("Listener: "+m_name);
System.out.println("Profile::name: "+arg.name);
System.out.println("Profile::id: "+arg.id);
System.out.println("Profile::properties: ");
System.out.println(info.properties);
}
public String m_name;
}
}
このようにして定義されたリスナクラスは、以下のようにデータポートに
対して、以下のようにセットされる。
{@code
protected ReturnCode_t onInitialize() {
m_outOut.addConnectorListener(
ConnectorListenerType.ON_BUFFER_EMPTY,
new MyListener("ON_BUFFER_EMPTY"));
:
}
}
第1引数の "ON_BUFFER_EMPTY" は、コールバックをフックするポイントで
あり、以下に列挙する値を取ることが可能である。データポートには、接
続時にデータの送受信方法について、インターフェース型、データフロー
型、サブスクリプション型等を設定することができるが、これらの設定に
よりフックされるポイントは異なる。以下に、インターフェースがCORBA
CDR型の場合のコールバック一覧を示す。
OutPort:
- - Push型: Subscription Typeによりさらにイベントの種類が分かれる。
- - Flush: Flush型にはバッファがないため ON_BUFFER 系のイベントは発生しない
- - ON_CONNECT
- - ON_DISCONNECT
- .
- - New型
- - ON_CONNECT
- - ON_DISCONNECT
- .
- - Periodic型
- - ON_BUFFER_EMPTY
- - ON_BUFFER_READ_TIMEOUT
- - ON_SENDER_EMPTY
- - ON_SENDER_ERROR
- - ON_CONNECT
- - ON_DISCONNECT
- .
- .
- - Pull型
- - ON_BUFFER_EMPTY
- - ON_BUFFER_READ_TIMEOUT
- - ON_SENDER_EMPTY
- - ON_SENDER_TIMEOUT
- - ON_SENDER_ERROR
- - ON_CONNECT
- - ON_DISCONNECT
- .
InPort:
- - Push型:
- - ON_BUFFER_EMPTY
- - ON_BUFFER_READ_TIMEOUT
- - ON_CONNECT
- - ON_DISCONNECT
- .
- - Pull型
- - ON_CONNECT
- - ON_DISCONNECT