ページの先頭行へ戻る
Interstage Application Server アプリケーション作成ガイド(イベントサービス編)

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

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

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


イベントサービスの場合

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

  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. イベントチャネルのオブジェクトリファレンスを獲得します。イベントチャネルのオブジェクトリファレンスの獲得方法については、“6.5 イベントチャネルのオブジェクトリファレンスの獲得”を参照してください。

  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. イベントチャネルのオブジェクトリファレンスを獲得します。イベントチャネルのオブジェクトリファレンスの獲得方法については、“5.5 イベントチャネルのオブジェクトリファレンスの獲得”を参照してください。

  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. イベントチャネルのオブジェクトリファレンスを獲得します。イベントチャネルのオブジェクトリファレンスの獲得方法については、“6.5 イベントチャネルのオブジェクトリファレンスの獲得”を参照してください。

  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()メソッドで、イベントチャネルにキューイングされているイベントデータ数を取得します。