| Interstage Application Server アプリケーション作成ガイド (イベントサービス編) |
目次
索引
![]()
|
| 第4章 アプリケーションの開発(各機能) | > 4.1 イベントチャネル接続のアプリケーション開発 | > 4.1.1 ノーティフィケーションサービスのQoS機能の運用 |
プロパティ項目に、サポートされていない項目または誤った項目を設定した場合、呼び出したインタフェースが異常終了し、以下の詳細情報が設定されます。
|
|
プロパティ項目 |
詳細情報 |
補足情報の設定個所 |
|
動的生成チャネル |
QoS |
ユーザ例外 UnsupportedQoS |
qos_err |
|
Admin |
ユーザ例外 UnsupportedAdmin |
admin_err |
|
|
静的生成チャネル |
QoS |
ユーザ例外 UnsupportedQoS |
qos_err |
|
メッセージ |
QoS |
システム例外 BAD_QOS |
− |
イベントチャネルに対し、プロパティ項目の設定でエラーになった場合、QoSプロパティ項目の場合は、UnsupportedQoS例外のqos_errメンバに、Adminプロパティ項目の場合、UnsupportedAdmin例外のadmin_errメンバに、それぞれ補足情報が設定されます。アプリケーションは、詳細情報および補足情報を解析することにより、誤ったProperties情報の設定内容を判断することができます。
UnsupportedQoS例外のqos_errメンバ、およびUnsupportedAdmin例外のadmin_errメンバは、PropertyErrorSeq型です。PropertyErrorSeq型はPropertyError構造体からなるシーケンス型です。PropertyError構造体は以下に示すようにcodeとnameで形成されています。

イベントチャネルに対し、プロパティ項目の設定でエラーになった場合、PropertyError構造体のnameにエラーになったプロパティ項目名が設定され、codeに詳細コードが設定されます。設定される詳細コードとエラーの意味を以下に示します。
|
詳細コード |
エラーの意味 |
|
UNAVAILABLE_VALUE |
指定されたプロパティ項目のうち、設定範囲外の値が設定されていた項目があります。これらの項目は設定されませんでした。 |
|
BAD_PROPERTY |
不正なプロパティ項目名が指定されました。 |
|
BAD_TYPE |
プロパティ項目の値のデータ型に誤りがあります。 |
|
BAD_VALUE |
不正な値が設定されました(create_channelメソッド発行時のみ)。 |
例えば、存在しないQoSプロパティ項目を設定した場合、codeにはBAD_PROPERTYが設定されます。
Cプログラムで静的生成イベントチャネルに対してQoSプロパティ項目の設定でエラーになった場合の例外処理方法と処理の流れを以下に説明します。
[プロパティ項目設定時の例外処理の例(Cの場合)]
...
CosNotifyChannelAdmin_EventChannel_set_qos( channel, pQoS, &env ); /* 1 */
...
if(env._major == CORBA_USER_EXCEPTION)
{
printf("UnsupportedQoS occured.\n");
ErrCodeCheck(&env );
...
}
...
void
ErrCodeCheck(CORBA_Environment *env )
{
/* ---- error qos length --------------------------------- */
int length, i;
char errcode[30];
CosNotification_PropertyErrorSeq *qos_err;
qos_err = (CosNotification_PropertyErrorSeq *) /* 2 */
CORBA_exception_value( env );
length = qos_err->_length;
printf( "PropertyErrorSeq length=[%d]\n", length ); /* 3 */
for( i = 0 ; i < length ; i++ ){
/* ---- error qos name -------------------------------- */
printf("err name = [%s]\n",(char*) qos_err->_buffer[i].name ); /* 4 */
/* ---- error_code ------------------------------------ */
switch(qos_err->_buffer[i].code ){ /* 5 */
case CosNotification_UNSUPPORTED_VALUE:
strcpy( errcode, "UNSUPPORTED_VALUE" );
break;
case CosNotification_BAD_PROPERTY:
strcpy( errcode, "BAD_PROPERTY" );
break;
case CosNotification_BAD_TYPE:
strcpy( errcode, "BAD_TYPE" );
break;
default :
strcpy( errcode, "error" );
}
printf( "err_code = [%s]\n", errcode );
}
return;
}
目次
索引
![]()
|