status の戻り値の説明は、どこに記載されていますか?
質問
サンプルソース上で幾つかの API を見ていますが、以下のように API の呼び出し結果の status や result から、「成功」と「失敗」を判定していますが、この status の戻り値の説明は、どこに記載されていますか?
ex.1
// ライセンスの種別に応じてアプリケーションIDを切り替えて、SDKの認証処理を呼び出します。
auto appId = (licenseType == 0) ? m_ApplicationId : m_StandaloneApplicationId;
auto status = login(m_DeveloperKey, appId,
userId, password,
licenseType, m_AutoLogoutOnExit, m_ProcessName,
0, L"", L"");
if (0 != status)
{
return false;
}
ex.2
// SDKのインポート処理を呼び出します。
auto result = importSession(sessionContent,
m_AutoLogoutOnExit, m_ProcessName,
m_ApplicationId, m_StandaloneApplicationId);
return (1 == result);
ex.3
// 貸出が指示されていれば、SDKのSeedファイル出力処理を呼び出します。
auto result = saveSeed(m_DeveloperKey, appId, userId, password,
licenseType, expireDate, seedFilePath, L"");
if (1 != result)
{
return false;
}
回答
サンプルのソースコードのうち CBriteClient.h の 124~244 行目で、B-rite SDK の関数群が宣言されています。
引数と戻り値の説明は、それぞれの関数宣言の箇所にコメントとして記載していますので、
そちらをご参照ください。
追加質問
上記の回答を確認しましたが、多くの API 関数の戻り値が
/// [returns]
/// 0: 成功, -1: 失敗
となっていました。
例えば、
typedef int(*BriteLogin)(const wchar_t, const wchar_t, const wchar_t, const wchar_t, int, int, const wchar_t, int, const wchar_t, const wchar_t*);
の関数呼び出しに対して「-1: 失敗」が返されたとき、その失敗の原因を特定させるための詳細エラーコードなどの仕組みはありませんか?
現行の IJCAD では、エラーメッセージを表示する時に詳細エラーコードを併記していることから、正常に起動できなかったお客様からの問い合わせをサポートフロントのメンバが受けたときに、この詳細エラーコードから原因の推測や回避策の提示を行っています。B-rite での類似の手段はありますか?
回答
以下の内容が調査結果です。
- B-rite Runtime は、ログイン時のみ、失敗したときの原因コードを返す。
原因コードで判別できるのは「アカウントがない」「ライセンスがない」「その他」の3つ。
他の処理 (ログアウト、ライセンス確認など) では原因コードを返さない。
原因コードを増やしたい (API サーバに接続できない, API の実行結果が NG だった, などが分かるようにしたいときなど) には、Runtime の改修が必要。
- B-rite SDK は、成功/失敗を区別するコードのみを返す。
B-rite Runtime から得た原因コードを、SDK の呼び出し元に返すようにはなっていない。
IJCAD で原因コードを利用するには、SDK の改修が必要。
DARE でもエラー原因が分からないことでサポートに負荷がかかっていたので、そのときに C# 用の SDK を改修して、SDK にメッセージを直書きし、出し分けるようにしました。
その時は C++ 用の SDK は改修しなかったため、C# 用と C++ 用で差が出ていたようです。
いずれにせよ、エラーメッセージの細かい出し分けをするためには SDK、または Runtime の改修が必要になります。