エラーコード/ログコード体系

エラーコード体系

各API でエラーコードは以下の形式をもつint 値である:

format
0       1       2       3       4(octet)
+-------+-------+-------+-------+
| 予約(0 fill)  | Level | Type  |
+-------+-------+-------+-------+
|<--------- Error Code -------->|

Level はエラーの深刻度を示し、Type はエラーの具体的な種別を分類するために利用する。 エラー回復処理ではほとんどの場合、Level のみに注目する。 Type はログ出力やデバッグなどの目的に利用することができる。

エラーコードから、レベルおよびタイプを抜き出す際には以下のマクロを利用する。

ARMS_ERR_LVL(code)
ARMS_ERR_TYPE(code)

レベル一覧

ARMS_ELVL_LOW
リトライで短時間での回復が期待できる
ARMS_ELVL_MID
リトライにより回復が期待できるが、時間がかかる
ARMS_ELVL_HIGH
リトライによる回復は期待できない
ARMS_ELVL_FATAL
ライブラリを停止すべき

エラーコード一覧

ARMS_EFATAL
ライブラリ内部で致命的エラーが発生した
ARMS_ETIMEOUT
タイムアウトが発生した
ARMS_EMAXRETRY
再送回数が上限に到達した
ARMS_EDONTRETRY
サーバから再送禁止を指示された
ARMS_ECALLBACK
コールバック関数でエラーが発生した
ARMS_ESYSTEM
メモリ不足など、動作環境が原因のエラーが発生した
ARMS_EMODSYNC
モジュールの同期が必要な状態となった
ARMS_EAPPEXEC
コマンド実行エラーが発生した
ARMS_EINVAL
不正な引数を指定された
ARMS_ESIZEL
引数で指定されたバッファにサイズの異常を検知した

ログコード体系

INFO-API でやりとりするログコードは以下の形式をもつint 値である:

format
0       1       2       3       4(octet)
+-------+-------+-------+-------+
|予約(0)|old_st |new_st | Type  |
+-------+-------+-------+-------+
|<---------- Log Code --------->|

old_st およびnew_st はライブラリの状態遷移にともなうログメッセージで利用する。 old_st は今までの状態で、new_st は新しく遷移した状態である。 状態遷移が発生しなかった場合や、自己遷移が発生した場合には両方が0 となる。 Type はログの種別を意味する。

ログコードから、状態およびタイプを抜き出す際には以下のマクロを利用する。

ARMS_LOG_OLD_ST(code)
ARMS_LOG_NEW_ST(code)
ARMS_LOG_TYPE(code)

状態一覧

ARMS_ST_INITIAL
起動直後
ARMS_ST_LSPULL
LS へアクセス中
ARMS_ST_RSPULL
RS へアクセス中
ARMS_ST_PULLDONE
PULL 動作終了(成功)
ARMS_ST_BOOT_FAIL
PULL 動作終了(失敗)
ARMS_ST_PUSH_INITIAL
Push 待ち受け処理開始直後
ARMS_ST_PUSH_SENDREADY
RS へPush 可能になったことを通知
ARMS_ST_PUSH_WAIT
Push 待ち受け可能
ARMS_ST_PUSH_REBOOT
RS からreboot を指示された

ログコード一覧

ARMS_LOG_EFALLBACK
異常を検知し、一つ前の状態へ戻った
ARMS_LOG_ILS_ACCESS_START
LSへのアクセスを開始した
ARMS_LOG_ILS_ACCESS_END
LSへのアクセスが正常に終了した
ARMS_LOG_ELS_ACCESS_FAIL
LSへのアクセスに失敗した
ARMS_LOG_IRS_ACCESS_START
RSへのアクセスを開始した
ARMS_LOG_IRS_ACCESS_END
RSへのアクセスが正常に終了した
ARMS_LOG_ERS_ACCESS_FAIL
RSへのアクセスに失敗した
ARMS_LOG_ILINE_CONNECTED
回線の接続が完了した
ARMS_LOG_ELINE_AUTH_FAIL
回線接続処理中に認証エラーが発生
ARMS_LOG_ELINE_TIMEOUT
回線接続処理中にタイムアウトが発生
ARMS_LOG_ILINE_DISCONNECTED
回線の切断が完了した
ARMS_LOG_IHTTP_CONNECT_START
コンフィグの取得を開始した
ARMS_LOG_IHTTP_CONNECT_END
コンフィグの取得が正常に終了した
ARMS_LOG_IHTTP_LISTEN_START
PUSH待ち受けを開始した
ARMS_LOG_IHTTP_ACCEPT
PUSHリクエストを受け付けた
ARMS_LOG_IHTTP_CLOSE
PUSH処理が終了した
ARMS_LOG_IHTTP_RETRY
リトライ処理を開始した
ARMS_LOG_EURL
不正なURLを指定された
ARMS_LOG_EHOST
不正なホストを指定された
ARMS_LOG_ESOCKET
ソケットへの読み書きに失敗した
ARMS_LOG_ECONNECT
IP/TCP/SSL いずれかのレベルで接続に失敗した
ARMS_LOG_EHTTP
HTTPのレベルで接続に失敗した
ARMS_LOG_ECERTIFICATE
サーバ証明書の検証に失敗した
ARMS_LOG_ENETNOMEM
ネットワーク処理でメモリ不足を検出
ARMS_LOG_ENETTIMEOUT
通信中にタイムアウトが発生した
ARMS_LOG_ECALLBACK
コールバック関数の呼び出しでエラーを検出した
ARMS_LOG_ESSL
OpenSSLライブラリ内でエラーを検出
ARMS_LOG_EROLLBACK
ロールバック処理に失敗した
ARMS_LOG_ERETRY
リトライ回数の上限に達した
ARMS_LOG_INFO
汎用の通常レベルのログ
ARMS_LOG_ERROR
汎用のエラーレベルのログ
ARMS_LOG_DEBUG
より詳細なログ