status の戻り値の説明は、どこに記載されていますか?

2021.07.06
B-rite SDK C++
thumbnail

質問

サンプルソース上で幾つかの 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 の改修が必要になります。

おすすめ記事