Interstage Application Server アプリケーション作成ガイド (イベントサービス編)
目次 索引 前ページ次ページ

第5章 アプリケーションの開発(C言語)

5.7 ローカルトランザクション

[C言語によるMixedモデルのローカルトランザクションのサプライヤ]

  CORBA_Boolean func() {
      ...
      util = CosNotifyChannelAdmin_EventChannel_create_util(
               object, CosNotifyChannelAdmin_EventChannel_CHANNEL_UTIL, &env); /* 1 */
      supplier = CosNotifyChannelAdmin_EventChannel_get_default_supplier_admin(
               object, &env);                                                  /* 2 */
      proxy_push = 
           CosNotifyChannelAdmin_SupplierAdmin_obtain_notification_push_consumer(
               supplier,ctype,&proxy_id, &env);                                /* 3 */
      CosNotifyChannelAdmin_StructuredProxyPushConsumer_connect_structured_push_supplier(
               proxy_push, CORBA_OBJECT_NIL, &env);                            /* 4 */
      ES_ChannelUtil_local_begin(util, proxy_push, &env );                     /* 5 */
      CosNotifyChannelAdmin_StructuredProxyPushConsumer_push_structured_event(
               proxy_push, data, &env );                                       /* 6 */
      ES_ChannelUtil_local_commit( util,  proxy_push, &env );                  /* 7 */
      CosNotifyChannelAdmin_StructuredProxyPushConsumer_disconnect_structured_push_consumer(
               proxy_push, &env );                                             /* 8 */
      ... 
  }
  1. ChannelUtilインタフェースのオブジェクトリファレンスを獲得します。
  2. イベントチャネル管理オブジェクトのオブジェクトリファレンスを獲得します。
  3. イベントチャネルのオブジェクトリファレンスを獲得します。
  4. イベントチャネルと接続します。
  5. ローカルトランザクションを開始します。
  6. イベントチャネルにイベントデータを送信します。
  7. ローカルトランザクションを完了します。
  8. イベントチャネルと切断します。

 接続するイベントチャネルのオブジェクトリファレンスを不揮発媒体に保存している場合は、2, 3, 4, 8の処理は不要となります。

[C言語によるMixedモデルのローカルトランザクションのコンシューマ]

  CORBA_Boolean func() {
      ... 
      util=CosNotifyChannelAdmin_EventChannel_create_util(
          object,CosNotifyChannelAdmin_EventChannel_CHANNEL_UTIL, &env );  /* 1 */
      consumer = CosNotifyChannelAdmin_EventChannel_get_default_consumer_admin(
                              object, &env );                              /* 2 */
      proxy_pull = 
            CosNotifyChannelAdmin_ConsumerAdmin_obtain_notification_pull_supplier(
                              consumer,ctype,&proxyID,&env );              /* 3 */
      CosNotifyChannelAdmin_StructuredProxyPullSupplier_connect_structured_pull_consumer(
                              proxy_pull, CORBA_OBJECT_NIL,&proxyID,&env); /* 4 */
      ES_ChannelUtil_local_begin(util, proxy_push, &env );                 /* 5 */

      data = CosNotifyChannelAdmin_StructuredProxyPullSupplier_pull_structured_event (
                              proxy_pull, &env );                          /* 6 */
      ES_ChannelUtil_local_commit( util,  proxy_push, &env );              /* 7 */
      CosNotifyChannelAdmin_StructuredProxyPullSupplier_disconnect_structured_pull_
                              supplier (proxy_pull, &env );                /* 8 */
      ... 
  }
  1. ChannelUtilインタフェースのオブジェクトリファレンスを獲得します。
  2. イベントチャネル管理オブジェクトのオブジェクトリファレンスを獲得します。
  3. イベントチャネルのオブジェクトリファレンスを獲得します。
  4. イベントチャネルと接続します。
  5. ローカルトランザクションを開始します。
  6. イベントチャネルにイベントデータを受信します。
  7. ローカルトランザクションを完了します。
  8. イベントチャネルと切断します。

 接続するイベントチャネルのオブジェクトリファレンスを不揮発媒体に保存している場合は、2, 3, 4, 8の処理は不要となります。


目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2005