| Interstage Application Server アプリケーション作成ガイド (イベントサービス編) |
目次
索引
![]()
|
| 第5章 アプリケーションの開発(C言語) |
C言語でのMixedモデルのアプリケーションの開発について説明します。
MixedモデルはPushモデル、Pullモデルの2つの通信モデルを使用します。サプライヤはイベントチャネルにイベントデータを送信し、コンシューマはイベントチャネルにイベントデータを要求します。その概要を以下に示します。

サプライヤはイベントチャネルにイベントデータを送信します。Pushモデルのサプライヤと同様のインタフェースを使用します。サプライヤからコンシューマにイベントデータを送信する処理の手続き例と処理の流れを説明します。
[C言語によるMixedモデルのサプライヤ]
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, CORBA_OBJECT_NIL, &env); /* 3 */
CosEventChannelAdmin_ProxyPushConsumer_push(
proxy_push, data, &env ); /* 4 */
CosEventChannelAdmin_ProxyPushConsumer_disconnect_push_consumer(
proxy_push, &env ); /* 5 */
...
}
[C言語によるMixedモデル(StructuredEvent型)のサプライヤ]
CORBA_Boolean func() {
...
supplier = CosNotifyChannelAdmin_EventChannel_get_default_supplier_admin (
object, &env ); /* 1 */
proxy_push =
CosNotifyChannelAdmin_SupplierAdmin_obtain_notification_push_consumer (
supplier,ctype,&proxy_id, &env); /* 2 */
CosNotifyChannelAdmin_StructuredProxyPushConsumer_connect_structured_push_supplier(
proxy_push, CORBA_OBJECT_NIL, &env); /* 3 */
CosNotifyChannelAdmin_StructuredProxyPushConsumer_push_structured_event (
proxy_push, data, &env ); /* 4 */
CosNotifyChannelAdmin_StructuredProxyPushConsumer_disconnect_structured_push_consumer (
proxy_push, &env ); /* 5 */
...
}
[C言語によるMixedモデル(any型)のサプライヤ]
CORBA_Boolean func() {
...
supplier = CosNotifyChannelAdmin_EventChannel_get_default_supplier_admin (
object, &env ); /* 1 */
proxy_push =
CosNotifyChannelAdmin_SupplierAdmin_obtain_notification_push_consumer (
supplier,ctype,&proxy_id, &env); /* 2 */
CosNotifyChannelAdmin_ProxyPushConsumer_connect_any_push_supplier(
proxy_push, CORBA_OBJECT_NIL, &env); /* 3 */
CosNotifyChannelAdmin_ProxyPushConsumer_push(
proxy_push, data, &env ); /* 4 */
CosNotifyChannelAdmin_ProxyPushConsumer_disconnect_push_consumer (
proxy_push, &env ); /* 5 */
...
}
コンシューマはイベントチャネルにイベントデータを要求します。Pullモデルのコンシューマと同様のインタフェースを使用します。コンシューマがイベントチャネルにイベントデータを要求する手続き例と処理の流れを説明します。
[C言語によるMixedモデルのコンシューマ]
CORBA_Boolean func() {
...
consumer = CosEventChannelAdmin_EventChannel_for_consumers(
object, &env ); /* 1 */
proxy_pull = CosEventChannelAdmin_ConsumerAdmin_obtain_pull_supplier(
consumer, &env ); /* 2 */
CosEventChannelAdmin_ProxyPullSupplier_connect_pull_consumer(
proxy_pull, CORBA_OBJECT_NIL, &env); /* 3 */
data = CosEventChannelAdmin_ProxyPullSupplier_pull(
proxy_pull, &env ); /* 4 */
CosEventChannelAdmin_ProxyPullSupplier_disconnect_pull_supplier(
proxy_pull, &env ); /* 5 */
...
}
[C言語によるMixedモデル(StructuredEvent型)のコンシューマ]
CORBA_Boolean func() {
...
consumer = CosNotifyChannelAdmin_EventChannel_get_default_consumer_admin(
object, &env ); /* 1 */
proxy_pull =
CosNotifyChannelAdmin_ConsumerAdmin_obtain_notification_pull_supplier(
consumer,ctype,&proxyID,&env ); /* 2 */
CosNotifyChannelAdmin_StructuredProxyPullSupplier_connect_structured_pull_consumer(
proxy_pull, CORBA_OBJECT_NIL,&proxyID,&env); /* 3 */
data = CosNotifyChannelAdmin_StructuredProxyPullSupplier_pull_structured_event (
proxy_pull, &env ); /* 4 */
CosNotifyChannelAdmin_StructuredProxyPullSupplier_disconnect_structured_pull_
supplier (proxy_pull, &env ); /* 5 */
...
}
[C言語によるMixedモデル(any型)のコンシューマ]
CORBA_Boolean func() {
...
consumer = CosNotifyChannelAdmin_EventChannel_get_default_consumer_admin(
object, &env ); /* 1 */
proxy_pull =
CosNotifyChannelAdmin_ConsumerAdmin_obtain_notification_pull_supplier(
consumer,ctype,&proxyID,&env ); /* 2 */
CosNotifyChannelAdmin_ProxyPullSupplier_connect_any_pull_consumer(
proxy_pull, CORBA_OBJECT_NIL,&proxyID,&env); /* 3 */
data = CosNotifyChannelAdmin_ProxyPullSupplier_pull(
proxy_pull, &env ); /* 4 */
CosNotifyChannelAdmin_ProxyPullSupplier_disconnect_pull_supplier(
proxy_pull, &env ); /* 5 */
...
}
目次
索引
![]()
|