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

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

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

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

 C++プログラムで接続情報を取得するアプリケーション作成例(イベントサービスの場合ノーティフィケーションの場合)と処理の流れを以下に説明します。

イベントサービスの場合

[イベントチャネルに接続しているアプリケーションの接続情報の取得(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. イベントチャネルのオブジェクトリファレンスを獲得します。イベントチャネルのオブジェクトリファレンスの獲得方法については、各言語の“アプリケーションの開発”−“イベントチャネルのオブジェクトリファレンスの獲得”を参照してください。
  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++の場合)]

  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. イベントチャネルのオブジェクトリファレンスを獲得します。イベントチャネルのオブジェクトリファレンスの獲得方法については、各言語の“アプリケーションの開発”−“イベントチャネルのオブジェクトリファレンスの獲得”を参照してください。
  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()メソッドで、イベントチャネルにキューイングされているイベントデータ数を取得します。

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

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