10 Oracle Key VaultクライアントSDKのエラー処理API
この項では、Oracle Key Vaultエラー管理のインタフェースについて説明します。
- okvErrGetDepth
okvErrGetDepthは、エラー・スタックの深さを返すために使用します。該当しない場合は、0が返されます。 - okvErrGetDepthForBatch
okvErrGetDepthForBatchは、指定したバッチ・ジョブ番号に対応するエラー・スタックの深さを返すために使用します。該当しない場合は、0が返されます。 - okvErrGetNum
okvErrGetNumは、エラー・スタックの最上部にあるエラー番号を返します。 - okvErrGetNumAtDepth
okvErrGetNumAtDepthは、エラー・スタックの指定した深さのエラー番号を返します。 - okvErrGetNumAtDepthForBatch
okvErrGetNumAtDepthForBatchは、指定したバッチ・ジョブ番号に対応するエラー・スタックの指定した深さのエラー番号を返します。 - okvErrGetNumForBatch
okvErrGetNumForBatchは、指定したバッチ・ジョブ番号に対応するエラー・スタックの最上部にあるエラー番号を返します。 - okvErrReset
okvErrResetでは、環境ハンドルのエラー・スタックをリセットします。 - okvGetTextForErrNum
okvGetTextForErrNumは、エラー番号のテキストを返します。
10.1 okvErrGetDepth
okvErrGetDepthは、エラー・スタックの深さを返すために使用します。該当しない場合は、0が返されます。
カテゴリ
エラー処理API
用途
okvErrGetDepthは、エラー・スタックの深さを返すために使用します。エラー・スタックにエラーが記録されていない場合は、0が返されます。
構文
ub1 okvErrGetDepth(OKVEnv *env);
パラメータ
| パラメータ | IN/OUT | 説明 |
|---|---|---|
env |
|
Oracle Key Vault環境ハンドル。 |
戻り値
| 戻り値 | 説明 |
|---|---|
ub1 |
Oracle Key Vaultエラー・スタックの深さ。 成功: ゼロ以外の正の数値が返されます。これは、エラー・スタックの深さです。 失敗: エラーが記録されない場合は深さがゼロになるため、ゼロが返されます。 |
コメント
なし。
例
ub4 err_depth = okvErrGetDepth(env);
if (err_depth == 0)
{
printf("No Error \n");
}
else
{
printf("Error\n");
}10.2 okvErrGetDepthForBatch
okvErrGetDepthForBatchは、指定したバッチ・ジョブ番号に対応するエラー・スタックの深さを返すために使用します。該当しない場合は、0が返されます。
カテゴリ
エラー処理API
用途
okvErrGetDepthForBatchは、指定したバッチ・ジョブ番号に対応するエラー・スタックの深さを返すために使用します。該当しない場合は、0が返されます。
構文
ub1 okvErrGetDepthForBatch(OKVEnv *env, ub4 batchjobnum);
パラメータ
| パラメータ | IN/OUT | 説明 |
|---|---|---|
env |
|
Oracle Key Vault環境ハンドル。 |
batchjobnum |
IN |
バッチ・ジョブ番号。 |
戻り値
| 戻り値 | 説明 |
|---|---|
ub1 |
Oracle Key Vaultエラー・スタックの深さ。 成功: ゼロ以外の正の数値が返されます。これは、個別のバッチ・ジョブに対応するエラー・スタックの深さです。 失敗: 個別のバッチ・ジョブにエラーが記録されていない場合は深さがゼロになるため、ゼロが返されます。 |
コメント
このbatchjobnumは、バッチ処理される操作の番号です。たとえば、ユーザーがキーを作成し、キーをアクティブ化し、キーを失効させてから破棄する場合、これらの操作はすべて同じ順序でバッチ処理されます。つまり、キーを作成するためのbatchjobnumは1、キーをアクティブ化するためのbatchjobnumは2、失効させるためのbatchjobnumは3、破棄するためのbatchjobnumは4になります。バッチ・ジョブの実行が終了すると、ユーザーはokvErrGetDepthForBatchにバッチ・ジョブ番号を渡して、個別のバッチ・ジョブのエラー・スタックからエラーの深さを取得できます。
指定したバッチ・ジョブ番号が無効な場合、このAPIはゼロ(0)を返します。
例
ub4 err_depth = 0;
okvBatchCreate(env);
okvCreateKey(...); /* 1st Batch Job */
okvActivate(...); /* 2nd Batch Job */
okvRevoke(...); /* 3rd Batch Job */
okvDestroy(...); /* 4th Batch Job */
okvBatchExecute(env);
/* Check error on top of the error stack for 1st batch job */
if (okvErrGetNumForBatch(env, 1))
{
printf("Found error for 1st batch job");
err_depth = okvErrGetDepthForBatch(env, 1);
printf("Depth of the error stack is %d", err_depth);
}10.3 okvErrGetNum
okvErrGetNumは、エラー・スタックの最上部にあるエラー番号を返します。
カテゴリ
エラー処理API
用途
okvErrGetNumは、エラー・スタックの最上部にあるエラー番号を返します。エラーが記録されていない場合は、OKV_SUCCESSが返されます。
構文
OKVErrNo okvErrGetNum(OKVEnv *env);
パラメータ
| パラメータ | IN/OUT | 説明 |
|---|---|---|
env |
|
Oracle Key Vault環境ハンドル。 |
戻り値
| 戻り値 | 説明 |
|---|---|
OKVErrNo |
Oracle Key Vaultエラー番号。 成功: エラー・スタックの最上部にあるエラー番号が返されます。 失敗: エラーがない場合は |
コメント
なし。
例
printf("Setting up Oracle Key Vault session\n");
okvConnect(env);
if (okvErrGetNum(env))
{
printf("Could not setup the Oracle Key Vault session\n"};
return 1;
}
else
{
printf("Successfully setup Oracle Key Vault session\n\n");
}10.4 okvErrGetNumAtDepth
okvErrGetNumAtDepthは、エラー・スタックの指定した深さのエラー番号を返します。
カテゴリ
エラー処理API
用途
okvErrGetNumAtDepthは、エラー・スタックの指定した深さのエラー番号を返します。該当しない場合は、OKV_SUCCESSが返されます。
構文
OKVErrNo okvErrGetNumAtDepth(OKVEnv *env, ub1 depth);
パラメータ
| パラメータ | IN/OUT | 説明 |
|---|---|---|
env |
|
Oracle Key Vault環境ハンドル。 |
depth |
IN |
エラー番号を求める深さ。 |
戻り値
| 戻り値 | 説明 |
|---|---|
OKVErrNo |
Oracle Key Vaultエラー番号。 成功: エラー・スタックの指定した深さのエラー番号が返されます。 該当しない場合: エラーがない場合は |
コメント
指定した深さがokvErrGetDepthから返される深さを超えている場合、okvErrGetNumAtDepthはOKV_SUCCESSを返します。
例
ub4 err_depth = okvErrGetDepth(env);
while (err_depth > 0)
{
ub4 error = 0;
/* Get error number to get error text */
error = okvErrGetNumAtDepth(env, err_depth--);
printf("Error %d: %s \n", error, okvGetTextForErrNum(error));
}10.5 okvErrGetNumAtDepthForBatch
okvErrGetNumAtDepthForBatchは、指定したバッチ・ジョブ番号に対応するエラー・スタックの指定した深さのエラー番号を返します。
カテゴリ
エラー処理API
用途
okvErrGetNumAtDepthForBatchは、指定したバッチ・ジョブ番号に対応するエラー・スタックの指定した深さのエラー番号を返します。該当しない場合は、OKV_SUCCESSが返されます。
構文
OKVErrNo okvErrGetNumAtDepthForBatch(OKVEnv *env, ub4 batchjobnum,
ub1 depth);パラメータ
| パラメータ | IN/OUT | 説明 |
|---|---|---|
env |
|
Oracle Key Vault環境ハンドル。 |
batchjobnum |
IN |
バッチ・ジョブ番号。 |
depth |
IN |
エラー番号を求める深さ。 |
戻り値
| 戻り値 | 説明 |
|---|---|
OKVErrNo |
Oracle Key Vaultエラー番号。 成功: 個別のバッチ・ジョブ番号に対応するエラー・スタックの指定した深さのエラー番号が返されます。 該当しない場合: エラーがない場合は |
コメント
batchjobnumは、バッチ処理される操作の番号です。たとえば、ユーザーがキーを作成し、キーをアクティブ化して、キーを失効させてから破棄する場合、これらの操作はすべて同じ順序でバッチ処理されます。つまり、キーを作成するためのbatchjobnumは1、キーをアクティブ化するためのbatchjobnumは2、失効させるためのbatchjobnumは3、破棄するためのbatchjobnumは4になります。バッチの実行が終了すると、ユーザーはokvErrGetNumAtDepthForBatchに要求するエラーのあるバッチ・ジョブ番号と深さを渡すことで、エラーの詳細を取得できます。
指定したバッチ・ジョブ番号が無効な場合、このAPIはOKV_SUCCESS (0)を返します。指定した深さがokvErrGetDepthForBatchから返される深さを超える場合、okvErrGetNumAtDepthForBatchはOKV_SUCCESSを返します。
例
ub4 err_depth = 0;
okvBatchCreate(env);
okvCreateKey(...); /* 1st Batch Job */
okvActivate(...); /* 2nd Batch Job */
okvRevoke(...); /* 3rd Batch Job */
okvDestroy(...); /* 4th Batch Job */
okvBatchExecute(env);
/* Check error on top of the error stack for 1st batch job */
if (okvErrGetNumForBatch(env, 1))
{
printf("Found error for 1st Batch Job");
err_depth = okvErrGetDepthForBatch(env, 1);
printf("Depth of the error stack is %d", err_depth);
while (err_depth > 0)
{
ub4 error = 0;
/* Get error number to get error text */
error = okvErrGetNumAtDepthForBatch(env, 1, err_depth--);
printf("Error %d: %s \n", error, okvGetTextForErrNum(error));
}
}10.6 okvErrGetNumForBatch
okvErrGetNumForBatchは、指定したバッチ・ジョブ番号に対応するエラー・スタックの最上部にあるエラー番号を返します。
カテゴリ
エラー処理API
用途
okvErrGetNumForBatchは、指定したバッチ・ジョブ番号に対応するエラー・スタックの最上部にあるエラー番号を返します。エラーが記録されていない場合は、OKV_SUCCESSが返されます。
構文
OKVErrNo okvErrGetNumForBatch(OKVEnv *env, ub4 batchjobnum);
パラメータ
| パラメータ | IN/OUT | 説明 |
|---|---|---|
env |
|
Oracle Key Vault環境ハンドル。 |
batchjobnum |
IN |
バッチ・ジョブ番号。 |
戻り値
| 戻り値 | 説明 |
|---|---|
OKVErrNo |
Oracle Key Vaultエラー番号。 成功: 個別のバッチ・ジョブに対応するエラー・スタックの最上部にあるエラー番号が返されます。 失敗: エラーがない場合は |
コメント
batchjobnumは、バッチ処理される操作の番号です。たとえば、ユーザーがキーを作成し、キーをアクティブ化し、キーを失効させて破棄する場合、これらの操作はすべて同じ順序でバッチ処理されます。つまり、キーを作成するためのbatchjobnumは1、キーをアクティブ化するためのbatchjobnumは2、失効させるためのbatchjobnumは3、破棄するためのbatchjobnumは4になります。バッチの実行が終了すると、ユーザーはokvErrGetNumForBatchにバッチ・ジョブ番号を渡して、個別のバッチ・ジョブに対応するエラー・スタックの最上部にあるエラーを取得できます。
指定したバッチ・ジョブ番号が無効な場合、このAPIはOKV_SUCCESS (0)を返します。
例
okvBatchCreate(env);
okvCreateKey(...); /* 1st Batch Job */
okvActivate(...); /* 2nd Batch Job */
okvRevoke(...); /* 3rd Batch Job */
okvDestroy(...); /* 4th Batch Job */
okvBatchExecute(env);
/* Check error on top of the error stack for 1st Batch Job */
if (okvErrGetNumForBatch(env, 1))
{
printf("Found error for 1st Batch Job");
}10.7 okvErrReset
okvErrResetでは、環境ハンドルのエラー・スタックをリセットします。
カテゴリ
エラー処理API
用途
okvErrResetでは、環境ハンドルのエラー・スタックをリセットします。
構文
void okvErrReset(OKVEnv *env);
パラメータ
| パラメータ | IN/OUT | 説明 |
|---|---|---|
env |
|
Oracle Key Vault環境ハンドル。 |
戻り値
値は返されません。
コメント
なし。
例
/* Do some KMIP operations like adding attribute to an object and get the same
attributes, below is an illustration of using 'okvErrReset' when getting
the individual attibutes
*/
ub4 umask = 0;
ub4 state = 0;
printf("Trying to get Crypto Usage Mask value from State Attribute\n");
okvAttrGetCryptoUsageMask(env, ttlv, &umask);
if (okvErrGetNum(env))
/* Check for errors */
okvErrReset(env); /* this will come in handy when we don’t want to keep
getting the same errors for the next set of API
calls where we try to get the individual Attribute
values */
printf("Trying to get State value from State Attribute\n");
okvAttrGetState(env, ttlv, &state);
if (okvErrGetNum(env))
/* Check for errors */
okvErrReset(env);10.8 okvGetTextForErrNum
okvGetTextForErrNumは、エラー番号のテキストを返します。
カテゴリ
エラー処理API
用途
okvGetTextForErrNumは、エラー番号のテキストを返します。エラー番号が無効な場合は、NULLを指すポインタが返されます。
構文
oratext *okvGetTextForErrNum(OKVErrNo err_no);
パラメータ
| パラメータ | IN/OUT | 説明 |
|---|---|---|
errno |
|
Oracle Key Vaultエラー番号 |
戻り値
| 戻り値 | 説明 |
|---|---|
oratext * |
Oracle Key Vaultエラー・テキスト 成功: エラーのテキストへのポインタが返されます。 失敗: エラー番号が無効な場合は、 |
コメント
なし。
例
ub4 error = 0;
printf("Error %d: %s \n", error, okvGetTextForErrNum(error));