| Interstage Application Server アプリケーション作成ガイド (イベントサービス編) |
目次
索引
![]()
|
| 第5章 アプリケーションの開発(C言語) |
C言語でのPushモデルのアプリケーションの開発について説明します。
サプライヤがコンシューマにイベントデータを送信する場合、イベントチャネル上のCosEventChannelAdmin_ProxyPushConsumer_pushメソッドを呼び出します。イベントチャネルはユーザがコンシューマ上に実装したserver_CosEventComm_PushConsumer_pushメソッドを呼び出します。その概要を以下に示します。

サプライヤからイベントチャネルへイベントデータを送信する手続き例と処理の流れを以下に説明します。
[C言語によるPushモデルのサプライヤ]
CORBA_Boolean func() {
...
supplier = CosEventChannelAdmin_EventChannel_for_suppliers(
object, &env ); /* 1 */
proxy_push = CosEventChannelAdmin_SupplierAdmin_obtain_push_consumer(
supplier, &env ); /* 2 */
CosEventChannelAdmin_ProxyPushConsumer_connect_push_supplier(
proxy_push, my_obj, &env ); /* 3 */
CosEventChannelAdmin_ProxyPushConsumer_push(
proxy_push, data, &env ); /* 4 */
CosEventChannelAdmin_ProxyPushConsumer_disconnect_push_consumer(
proxy_push, &env ); /* 5 */
...
}
サプライヤからイベントデータを送信するには下記のメソッドを使用します。引数のdataにイベントデータを指定して送信します。このCosEventChannelAdmin_ProxyPushConsumerはCosEventComm_PushConsumerを継承しています。
void CosEventChannelAdmin_ProxyPushConsumer_push(
CosEventChannelAdmin_ProxyPushConsumer obj,
CORBA_any *data,
CORBA_Environment *env );
コンシューマはイベントチャネルから送信されるイベントデータを受け取るために、server_CosEventComm_PushConsumer_pushメソッドを実装します。
イベントチャネルはコンシューマ上の、server_CosEventComm_PushConsumer_pushメソッドを呼び出し、コンシューマにイベントデータを送信します。コンシューマがイベントデータを受け取る例と処理の流れを以下に説明します。
[C言語によるPushモデルのコンシューマ]
CORBA_Boolean func() {
...
consumer = CosEventChannelAdmin_EventChannel_for_consumers(
object, &env ); /* 1 */
proxy_push = CosEventChannelAdmin_ConsumerAdmin_obtain_push_supplier(
consumer, &env ); /* 2 */
CosEventChannelAdmin_ProxyPushSupplier_connect_push_consumer(
proxy_push, my_obj, &env ); /* 3 */
...
}
void
server_CosEventComm_PushConsumer_push( /* 4 */
CosEventComm_PushConsumer obj,
CORBA_any *any_data,
CORBA_Environment *env ) {
...
/* アプリケーションの処理 */
...
return;
}

コンシューマ側のアプリケーションでイベントチャネルに対してCosEventChannelAdmin_ProxyPushSupplier_disconnect_push_supplierメソッドを発行しないで、アプリケーションを終了させ、その後、同一のアプリケーションを再起動した場合、同一イベントデータが複数個配信されます。コンシューマアプリケーションを終了する場合は、必ずイベントチャネルに対してCosEventChannelAdmin_ProxyPushSupplier_disconnect_push_supplierメソッドを発行してください。
目次
索引
![]()
|