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

第4章 アプリケーションの開発(各機能)> 4.1 イベントチャネル接続のアプリケーション開発

4.1.3 イベントチャネルの接続情報の取得

 アプリケーションから、イベントチャネルに接続しているコンシューマおよびサプライヤの情報を取得することができます。
 取得できる接続情報を以下に示します。

 接続情報を取得するアプリケーション作成例と処理の流れを以下に説明します。

イベントサービスの場合

[イベントチャネルに接続しているアプリケーションの接続情報の取得(C言語の場合)]

  CORBA_Boolean func() {
      CosEventChannelAdmin_EventChannel    channel;
      ES_ChannelUtil                       util;
      CORBA_Environment                    env;
      CORBA_unsigned_long                  consumer;
      CORBA_unsigned_long                  supplier;

      channel = イベントチャネルのオブジェクトリファレンスの獲得      /* 1 */
      util = CosEventChannelAdmin_EventChannel_create_util(
      channel, CosEventChannelAdmin_EventChannel_CHANNEL_UTIL, &env); /* 2 */
      pProxyDataSeq = ES_ChannelUtil_get_proxys(
                       util, ES_ChannelUtil_ALL_PROXYS, &env);        /* 3 */
      consumer = ES_ChannelUtil_get_consumer_count(
                       util, &env );                                  /* 4 */
      supplier = ES_ChannelUtil_get_supplier_count(
                       util, &env );                                  /* 5 */
      queue = ES_ChannelUtil_get_queue_length(
                       util, &env );                                  /* 6 */
      ... 
  }
  1. イベントチャネルのオブジェクトリファレンスを獲得します。イベントチャネルのオブジェクトリファレンスの獲得方法については、“アプリケーションの開発(C言語)”−“イベントチャネルのオブジェクトリファレンスの獲得”を参照してください。
  2. CosEventChannelAdmin_EventChannel_create_util()メソッドで、イベントチャネルからESインタフェースのオブジェクトリファレンスを作成します
  3. ES_ChannelUtil_get_proxys()メソッドで、イベントチャネルに接続しているコンシューマ/サプライヤの接続情報を取得します。
  4. ES_ChannelUtil_get_consumer_count()メソッドで、イベントチャネルに接続しているコンシューマ数を取得します。
  5. ES_ChannelUtil_get_supplier_count()メソッドで、イベントチャネルに接続しているサプライヤ数を取得します。
  6. ES_ChannelUtil_get_queue_length()メソッドで、イベントチャネルにキューイングされているイベントデータ数を取得します。

[イベントチャネルに接続しているアプリケーションの接続情報の取得(C++の場合)]

  CosEventChannelAdmin::EventChannel_ptr  channel;
  CORBA::Object_ptr                       util; 
  ES::ChannelUtil_ptr                     Esutil; 
  ES::ChannelUtil::ProxyDataSeq           *pPxyData; 
  CORBA::ULong                            consumer; 
  CORBA::ULong                            supplier; 
  CORBA::ULong                            queue; 
  CosEventChannelAdmin::EventChannel::UtilType type; 
  ES::ChannelUtil::ProxyKind              proxy_kind; 
   ... 
  channel = イベントチャネルのオブジェクトリファレンスの獲得          /* 1 */
   /*-----  get ES_ChannelUtil interface object  ----*/
  type = CosEventChannelAdmin::EventChannel::CHANNEL_UTIL; 
  util  = channel->create_util(type,env);                             /* 2 */
  Esutil  = ES::ChannelUtil::_narrow( util ); 
   /*-----  get channel connection information  -----*/
  proxy_kind = ES::ChannelUtil::ALL_PROXYS; 
  pPxyData = Esutil->get_proxys(proxy_kind, env );                   /* 3 */
   /* ---- get consumer count ---- */
  consumer = Esutil->get_consumer_count( env );                      /* 4 */
   /* ---- get supplier count ---- */
  supplier = Esutil->get_supplier_count( env );                      /* 5 */
   /* ---- get queue length ---- */
  queue    = Esutil->get_queue_length( env );                        /* 6 */
  1. イベントチャネルのオブジェクトリファレンスを獲得します。イベントチャネルのオブジェクトリファレンスの獲得方法については、“アプリケーションの開発(C++言語)”−“イベントチャネルのオブジェクトリファレンスの獲得”を参照してください。
  2. CosEventChannelAdmin::EventChannel::create_util()メソッドで、イベントチャネルからESインタフェースのオブジェクトリファレンスを作成します
  3. ES::ChannelUtil::get_proxys()メソッドで、イベントチャネルに接続しているコンシューマ/サプライヤの接続情報を取得します。
  4. ES::ChannelUtil::get_consumer_count()メソッドで、イベントチャネルに接続しているコンシューマ数を取得します。
  5. ES::ChannelUtil::get_supplier_count()メソッドで、イベントチャネルに接続しているサプライヤ数を取得します。
  6. ES::ChannelUtil::get_queue_length()メソッドで、イベントチャネルにキューイングされているイベントデータ数を取得します。

ノーティフィケーションサービスの場合

[イベントチャネルに接続しているアプリケーションの接続情報の取得(C言語の場合)]

  CORBA_Boolean func() {
      CosEventChannelAdmin_EventChannel     channel;
      ES_ChannelUtil                        util;
      CORBA_Environment                     env;
      CORBA_unsigned_long                   consumer;
      CORBA_unsigned_long                   supplier;

      channel = イベントチャネルのオブジェクトリファレンスの獲得              /* 1 */
      util = CosNotifyChannelAdmin_EventChannel_create_util(
             channel, CosNotifyChannelAdmin_EventChannel_CHANNEL_UTIL, &env); /* 2 */
      pProxyDataSeq = ES_ChannelUtil_get_proxys(
                    util, ES_ChannelUtil_ALL_PROXYS, &env);                   /* 3 */
      consumer = ES_ChannelUtil_get_consumer_count(
                    util, &env );                                             /* 4 */
      supplier = ES_ChannelUtil_get_supplier_count(
                    util, &env );                                             /* 5 */
      queue = ES_ChannelUtil_get_queue_length(
                    util, &env );                                             /* 6 */
      ... 
  }
  1. イベントチャネルのオブジェクトリファレンスを獲得します。イベントチャネルのオブジェクトリファレンスの獲得方法については、“アプリケーションの開発(C言語)”−“イベントチャネルのオブジェクトリファレンスの獲得”を参照してください。
  2. CosNotifyChannelAdmin_EventChannel_create_util()メソッドで、イベントチャネルからESインタフェースのオブジェクトリファレンスを作成します。
  3. ES_ChannelUtil_get_proxys()メソッドで、イベントチャネルに接続しているコンシューマ/サプライヤの接続情報を取得します。
  4. ES_ChannelUtil_get_consumer_count()メソッドで、イベントチャネルに接続しているコンシューマ数を取得します。
  5. ES_ChannelUtil_get_supplier_count()メソッドで、イベントチャネルに接続しているサプライヤ数を取得します。
  6. ES_ChannelUtil_get_queue_length()メソッドで、イベントチャネルにキューイングされているイベントデータ数を取得します。

[イベントチャネルに接続しているアプリケーションの接続情報の取得(C++の場合)]

  CosNotifyChannelAdmin::EventChannel_ptr channel;
  CORBA::Object_ptr                       util; 
  ES::ChannelUtil_ptr                     Esutil; 
  ES::ChannelUtil::ProxyDataSeq           *pPxyData; 
  CORBA::ULong                            consumer; 
  CORBA::ULong                            supplier; 
  CORBA::ULong                            queue; 
  CosNotifyChannelAdmin::EventChannel::UtilType type; 
  ES::ChannelUtil::ProxyKind              proxy_kind; 
   ... 
  channel = イベントチャネルのオブジェクトリファレンスの獲得          /* 1 */
   /*-----  get ES_ChannelUtil interface object  ----*/
  type = CosNotifyChannelAdmin::EventChannel::CHANNEL_UTIL; 
  util  = channel->create_util(type,env);                             /* 2 */
  Esutil  = ES::ChannelUtil::_narrow( util ); 
   /*-----  get channel connection information  -----*/
  proxy_kind = ES::ChannelUtil::ALL_PROXYS; 
  pPxyData = Esutil->get_proxys(proxy_kind, env );                   /* 3 */
   /* ---- get consumer count ---- */
  consumer = Esutil->get_consumer_count( env );                      /* 4 */
   /* ---- get supplier count ---- */
  supplier = Esutil->get_supplier_count( env );                      /* 5 */
   /* ---- get queue length ---- */
  queue    = Esutil->get_queue_length( env );                        /* 6 */
  1. イベントチャネルのオブジェクトリファレンスを獲得します。イベントチャネルのオブジェクトリファレンスの獲得方法については、“アプリケーションの開発(C++言語)”−“イベントチャネルのオブジェクトリファレンスの獲得”を参照してください。
  2. CosNotifyChannelAdmin::EventChannel::create_util()メソッドで、イベントチャネルからESインタフェースのオブジェクトリファレンスを作成します
  3. ES::ChannelUtil::get_proxys()メソッドで、イベントチャネルに接続しているコンシューマ/サプライヤの接続情報を取得します。
  4. ES::ChannelUtil::get_consumer_count()メソッドで、イベントチャネルに接続しているコンシューマ数を取得します。
  5. ES::ChannelUtil::get_supplier_count()メソッドで、イベントチャネルに接続しているサプライヤ数を取得します。
  6. ES::ChannelUtil::get_queue_length()メソッドで、イベントチャネルにキューイングされているイベントデータ数を取得します。

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

Copyright 2008 FUJITSU LIMITED