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

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

6.8 グローバルトランザクション

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

  CORBA::Boolean func() {
      ...
      try {
          supplier = EventCh->default_supplier_admin( env );       /* 1 */
          tmp_proxy = supplier->obtain_notification_push_consumer(
                                    ctype,proxy_id, env );         /* 2 */
          proxy_push = CosNotifyChannelAdmin::StructuredProxyPushConsumer::_narrow(
                                    tmp_proxy ); 
          proxy_push->connect_structured_push_supplier(
               CosNotifyComm::StructuredPushSupplier::_nil(),env); /* 3 */
          Current->begin(env);                                     /* 4 */
          proxy_push->push_structured_event(data,env);             /* 5 */
          Current->commit(CORBA_TRUE,  env);                       /* 6 */
          proxy_push->disconnect_structured_push_consumer(env);    /* 7 */
      } catch( CORBA::Exception &e ) {
               ... 
      }      ... 
  }
  1. イベントチャネル管理オブジェクトのオブジェクトリファレンスを獲得します。
  2. イベントチャネルのオブジェクトリファレンスを獲得します。
  3. イベントチャネルと接続します。
  4. グローバルトランザクションを開始します。
  5. イベントチャネルにイベントデータを送信します。
  6. グローバルトランザクションを完了します。
  7. イベントチャネルと切断します。

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

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

  CORBA::Boolean func() {
      ... 
      try {
          consumer = EventCh->default_consumer_admin( env );             /* 1 */
          tmp_proxy = consumer->obtain_notification_pull_supplier(
                                        ctype,proxy_id,env);             /* 2 */
          proxy_pull = CosNotifyChannelAdmin::StructuredProxyPullSupplier::_narrow(
                                        tmp_proxy ); 
          proxy_pull->connect_structured_pull_consumer(
                    CosNotifyComm::StructuredPullConsumer::_nil(),env);  /* 3 */
           Current->begin(env);                                          /* 4 */
          data = proxy_pull->pull_structured_event(env);                 /* 5 */
         Current->commit(CORBA_TRUE,  env);                              /* 6 */
         proxy_pull->disconnect_structured_pull_supplier(env);           /* 7 */
      } catch( CORBA::Exception &e ) {
               ... 
      }
      ... 
  }
  1. イベントチャネル管理オブジェクトのオブジェクトリファレンスを獲得します。
  2. イベントチャネルのオブジェクトリファレンスを獲得します。
  3. イベントチャネルと接続します。
  4. グローバルトランザクションを開始します。
  5. イベントチャネルにイベントデータを受信します。
  6. グローバルトランザクションを完了します。
  7. イベントチャネルと切断します。

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


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

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