1 /*---------------------------------------------------------------------------*
2   Project:  Horizon
3   File:     http_Result.h
4 
5   Copyright (C)2009 Nintendo Co., Ltd.  All rights reserved.
6 
7   These coded instructions, statements, and computer programs contain
8   proprietary information of Nintendo of America Inc. and/or Nintendo
9   Company Ltd., and are protected by Federal copyright law.  They may
10   not be disclosed to third parties or copied or duplicated in any form,
11   in whole or in part, without the prior written consent of Nintendo.
12 
13   $Rev: 29844 $
14  *---------------------------------------------------------------------------*/
15 
16 #ifndef NN_HTTP_HTTP_RESULT_H_
17 #define NN_HTTP_HTTP_RESULT_H_
18 
19 
20 #include <nn/Result.h>
21 #include <nn/net/compatible/nhttp.h>
22 
23 //NHTTPライブラリのResultコードを、HTTPのResultCodeに変換するためのマクロ
24 #define CHANGE_NHTTP_RESULT_CODE_MASK 0x000003ff
25 #define CHANGE_NHTTP_RESULT_CODE(nhttpCode) \
26     (nhttpCode) & (CHANGE_NHTTP_RESULT_CODE_MASK)
27 
28 
29 /*!
30   @addtogroup nn_http                       http
31   @{
32 */
33 
34 /*!
35  @brief  APIのC言語用結果コード。APIの返値であるnnResultのdescription要素として格納される。
36 */
37 enum nnHttpResultCode
38 {
39     /* 汎用*/
40     NN_HTTP_ER_NONE                     = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_NONE),                                //!< エラー無し
41     NN_HTTP_ER_INVALID_STATUS           = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_INVALID_STATUS),                      //!< 不正なステータス
42     NN_HTTP_ER_INVALID_PARAM            = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_INVALID_PARAM),                       //!< 不正なパラメータ
43     NN_HTTP_ER_NOMEM                    = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_NOMEM),                               //!< メモリの動的確保失敗
44     NN_HTTP_ER_CREATE_EVENT             = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_CREATE_EVENT),                        //!< イベント生成失敗
45     NN_HTTP_ER_CREATE_MUTEX             = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_CREATE_MUTEX),                        //!< ミューテックス生成失敗
46     NN_HTTP_ER_CREATE_QUEUE             = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_CREATE_QUEUE),                        //!< メッセージキュー生成失敗
47     NN_HTTP_ER_CREATE_THREAD            = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_CREATE_THREAD),                       //!< スレッド生成失敗
48     NN_HTTP_ER_CONNECTION_NOT_INITIALIZED          = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_CODE(100)),                //!< コネクションの未初期化
49     NN_HTTP_ER_ALREADY_ASSIGN_HOST      = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_CODE(101)),                           //!< 通信先がすでに割り当て済みである
50     NN_HTTP_ER_SESSION                  = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_CODE(102)),                           //!< 不正なプロセスによるセッションの乗っ取り
51     NN_HTTP_ER_CLIENT_PROCESS_MAX       = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_CODE(103)),                           //!< 同時利用可能なクライアントプロセス数のクライアントがすでに利用中である。
52     NN_HTTP_ER_IPC_SESSION_MAX          = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_CODE(104)),                           //!< 同時に接続可能なIPCセッション数のセッションがすでに接続されている(つまりクライアント数、コネクション数共に最大値に達している。)
53     NN_HTTP_ER_TIMEOUT                  = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_CODE(105)),                           //!< タイムアウト
54 
55     /* ライブラリ処理関連 */
56     NN_HTTP_ER_ALREADY_INITIALIZED      = nn::Result::DESCRIPTION_ALREADY_INITIALIZED,  //!< ライブラリが初期化済み
57     NN_HTTP_ER_NOT_INITIALIZED          = nn::Result::DESCRIPTION_NOT_INITIALIZED,      //!< ライブラリが未初期化
58 
59     /* メッセージキュー関連 */
60     NN_HTTP_ER_MSGQ_SEND_LSN    = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_MSGQ_SEND_LSN),         //!< リスナースレッドメッセージキューへの送信失敗
61     NN_HTTP_ER_MSGQ_RECV_LSN    = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_MSGQ_RECV_LSN),         //!< リスナースレッドメッセージキュー受信失敗
62     NN_HTTP_ER_MSGQ_RECV_COMM   = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_MSGQ_RECV_COMM),        //!< 通信スレッドメッセージキュー受信失敗
63 
64     /* 接続ハンドル関連 */
65     NN_HTTP_ER_CONN_NOMORE      = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_CONN_NOMORE),         //!< 接続ハンドル登録最大数越え
66     NN_HTTP_ER_CONN_NOSUCH      = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_CONN_NOSUCH),         //!< 該当接続ハンドルなし
67     NN_HTTP_ER_CONN_STATUS      = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_CONN_STATUS),         //!< 接続ハンドル不正ステータス
68     NN_HTTP_ER_CONN_ADD         = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_CONN_ADD),            //!< 接続ハンドル登録失敗
69     NN_HTTP_ER_CONN_CANCELED    = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_CONN_CANCELED),       //!< 接続ハンドルキャンセル
70     NN_HTTP_ER_CONN_HOST_MAX    = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_CONN_HOST_MAX),       //!< 同一ホストへの最大同時接続数越え
71     NN_HTTP_ER_CONN_PROCESS_MAX = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_CODE(26)),            //!< 1プロセスの使用コネクション最大数越え
72 
73     /* リクエスト関連 */
74     NN_HTTP_ER_REQ_URL              = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_REQ_URL),             //!< 不正なURL
75     NN_HTTP_ER_REQ_CONNMSG_PORT     = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_REQ_CONNMSG_PORT),    //!< CONNECT送信用ポート番号不正
76     NN_HTTP_ER_REQ_UNKNOWN_METHOD   = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_REQ_UNKNOWN_METHOD),  //!< 認識できないメソッド
77 
78     /* レスポンス関連 */
79     NN_HTTP_ER_RES_HEADER           = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_RES_HEADER),          //!< 不正なHTTPヘッダ
80     NN_HTTP_ER_RES_NONEWLINE        = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_RES_NONEWLINE),       //!< HTTPヘッダ次行なし
81     NN_HTTP_ER_RES_BODYBUF          = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_RES_BODYBUF),         //!< HTTPボディ受信バッファエラー
82     NN_HTTP_ER_RES_BODYBUF_SHORTAGE = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_CODE(43)),            //!< HTTPボディ受信バッファの不足
83 
84     /* POST関連 */
85     NN_HTTP_ER_POST_ADDED_ANOTHER   = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_POST_ADDED_ANOTHER),  //!< POSTデータ追加失敗(別タイプPOSTが既存)
86     NN_HTTP_ER_POST_BOUNDARY        = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_POST_BOUNDARY),       //!< Boundaryが正しく設定できない
87     NN_HTTP_ER_POST_SEND            = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_POST_SEND),           //!< POSTリクエスト送信失敗
88     NN_HTTP_ER_POST_UNKNOWN_ENCTYPE = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_POST_UNKNOWN_ENCTYPE),//!< 不明なエンコードタイプ
89     NN_HTTP_ER_POST_NODATA          = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_POST_NODATA),         //!< 送信データ設定無し
90 
91     /* SSL関連 */
92     NN_HTTP_ER_SSL                   = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_SSL),                  //!< SSLエラー
93     NN_HTTP_ER_SSL_CERT_EXIST        = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_SSL_CERT_EXIST),       //!< SSL 証明書設定済み(再登録前に削除が必要)
94     NN_HTTP_ER_SSL_NO_CA_CERT_STORE  = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_CODE(200)),            //!< SSL 該当するCA証明書ストアが登録されていない
95     NN_HTTP_ER_SSL_NO_CLIENT_CERT    = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_CODE(201)),            //!< SSL 該当するクライアント証明書が登録されていない
96     NN_HTTP_ER_SSL_CA_CERT_STORE_MAX = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_CODE(202)),            //!< SSL プロセスごとのCA証明書ストア同時登録最大数の証明書ストアがすでに登録されている。
97     NN_HTTP_ER_SSL_CLIENT_CERT_MAX   = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_CODE(203)),            //!< SSL プロセスごとのクライアント証明書同時登録最大数の証明書がすでに登録されている。
98     NN_HTTP_ER_SSL_FAIL_TO_CREATE_CERT_STORE = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_CODE(204)),    //!< SSL 証明書ストアの作成に失敗
99     NN_HTTP_ER_SSL_FAIL_TO_CREATE_CLIENT_CERT = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_CODE(205)),   //!< SSL クライアント証明書の作成に失敗
100 
101     /* ソケット関連 */
102     NN_HTTP_ER_SOC_DNS  = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_SOC_DNS),             //!< DNS名前解決失敗
103     NN_HTTP_ER_SOC_SEND = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_SOC_SEND),            //!< ソケットデータ送信失敗
104     NN_HTTP_ER_SOC_RECV = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_SOC_RECV),            //!< ソケットデータ受信失敗
105     NN_HTTP_ER_SOC_CONN = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_SOC_CONN),            //!< ソケット接続失敗
106     NN_HTTP_ER_SOC_KEEPALIVE_DISCONNECTED = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_SOC_KEEPALIVE_DISCONNECTED), //!< キープアライブ通信がサーバ側から切断された
107 
108     /* プロキシ関連 */
109     NN_HTTP_ER_GET_PROXY_SETTING = CHANGE_NHTTP_RESULT_CODE(NHTTP_ER_GET_DEFAULT_PROXY)                   //!< 機器に設定されているProxy値の取得に失敗した。
110 };
111 
112 /*!
113   @}
114 */
115 
116 #ifdef __cplusplus
117 
118 
119 namespace nn {
120 namespace http {
121     /*!
122      @brief  APIの結果コード。APIの返値であるResultのdescription要素として格納される。
123          @note 現状はNHTTPライブラリの結果コード値と合わせる(ただしResultのdescriptionは10bitであるため、下位10bitのみ用いる。)NHTTPライブラリと依存関係になってしまうため、将来的には独立した値に変更する。
124     */
125     enum ResultCode
126     {
127         /* 汎用*/
128         ER_NONE                 = NN_HTTP_ER_NONE,                   //!< エラー無し
129         ER_INVALID_STATUS       = NN_HTTP_ER_INVALID_STATUS,         //!< 不正なステータス
130         ER_INVALID_PARAM        = NN_HTTP_ER_INVALID_PARAM,          //!< 不正なパラメータ
131         ER_NOMEM                = NN_HTTP_ER_NOMEM,                  //!< メモリの動的確保失敗
132         ER_CREATE_EVENT         = NN_HTTP_ER_CREATE_EVENT,           //!< イベント生成失敗
133         ER_CREATE_MUTEX         = NN_HTTP_ER_CREATE_MUTEX,           //!< ミューテックス生成失敗
134         ER_CREATE_QUEUE         = NN_HTTP_ER_CREATE_QUEUE,           //!< メッセージキュー生成失敗
135         ER_CREATE_THREAD        = NN_HTTP_ER_CREATE_THREAD,          //!< スレッド生成失敗
136         ER_CONNECTION_NOT_INITIALIZED      = NN_HTTP_ER_CONNECTION_NOT_INITIALIZED,        //!< 通信先が割り当てられていない
137         ER_ALREADY_ASSIGN_HOST  = NN_HTTP_ER_ALREADY_ASSIGN_HOST,    //!< 通信先がすでに割り当て済みである
138         ER_SESSION              = NN_HTTP_ER_SESSION,                //!< IPCセッションが不正である
139         ER_CLIENT_PROCESS_MAX   = NN_HTTP_ER_CLIENT_PROCESS_MAX,     //!< 同時利用可能なクライアントプロセス数のクライアントがすでに利用中である。
140         ER_IPC_SESSION_MAX      = NN_HTTP_ER_IPC_SESSION_MAX ,       //!< 同時に接続可能なIPCセッション数のセッションがすでに接続されている(つまりクライアント数、コネクション数共に最大値に達している。)
141         ER_TIMEOUT              = NN_HTTP_ER_TIMEOUT,                //!< タイムアウト
142 
143         /* ライブラリ処理関連 */
144         ER_ALREADY_INITIALIZED  = NN_HTTP_ER_ALREADY_INITIALIZED,    //!< ライブラリが初期化済み
145         ER_NOT_INITIALIZED      = NN_HTTP_ER_NOT_INITIALIZED,        //!< ライブラリが未初期化
146 
147         /* メッセージキュー関連 */
148         ER_MSGQ_SEND_LSN        = NN_HTTP_ER_MSGQ_SEND_LSN,          //!< リスナースレッドメッセージキューへの送信失敗
149         ER_MSGQ_RECV_LSN        = NN_HTTP_ER_MSGQ_RECV_LSN,          //!< リスナースレッドメッセージキュー受信失敗
150         ER_MSGQ_RECV_COMM       = NN_HTTP_ER_MSGQ_RECV_COMM,         //!< 通信スレッドメッセージキュー受信失敗
151 
152         /* 接続ハンドル関連 */
153         ER_CONN_NOMORE          = NN_HTTP_ER_CONN_NOMORE,            //!< 接続ハンドル登録最大数越え
154         ER_CONN_NOSUCH          = NN_HTTP_ER_CONN_NOSUCH,            //!< 該当接続ハンドルなし
155         ER_CONN_STATUS          = NN_HTTP_ER_CONN_STATUS,            //!< 接続ハンドル不正ステータス
156         ER_CONN_ADD             = NN_HTTP_ER_CONN_ADD,               //!< 接続ハンドル登録失敗
157         ER_CONN_CANCELED        = NN_HTTP_ER_CONN_CANCELED,          //!< 接続ハンドルキャンセル
158         ER_CONN_HOST_MAX        = NN_HTTP_ER_CONN_HOST_MAX,          //!< 同一ホストへの最大同時接続数越え
159         ER_CONN_PROCESS_MAX     = NN_HTTP_ER_CONN_PROCESS_MAX,       //!< 1プロセスの使用コネクション最大数越え
160 
161         /* リクエスト関連 */
162         ER_REQ_URL              = NN_HTTP_ER_REQ_URL,                //!< 不正なURL
163         ER_REQ_CONNMSG_PORT     = NN_HTTP_ER_REQ_CONNMSG_PORT,       //!< CONNECT送信用ポート番号不正
164         ER_REQ_UNKNOWN_METHOD   = NN_HTTP_ER_REQ_UNKNOWN_METHOD,     //!< 認識できないメソッド
165 
166         /* レスポンス関連 */
167         ER_RES_HEADER           = NN_HTTP_ER_RES_HEADER,             //!< 不正なHTTPヘッダ
168         ER_RES_NONEWLINE        = NN_HTTP_ER_RES_NONEWLINE,          //!< HTTPヘッダ次行なし
169         ER_RES_BODYBUF          = NN_HTTP_ER_RES_BODYBUF,            //!< HTTPボディ受信バッファエラー
170         ER_RES_BODYBUF_SHORTAGE = NN_HTTP_ER_RES_BODYBUF_SHORTAGE,   //!< HTTPボディ受信バッファの不足
171 
172         /* POST関連 */
173         ER_POST_ADDED_ANOTHER   = NN_HTTP_ER_POST_ADDED_ANOTHER,     //!< POSTデータ追加失敗(別タイプPOSTが既存)
174         ER_POST_BOUNDARY        = NN_HTTP_ER_POST_BOUNDARY,          //!< Boundaryが正しく設定できない
175         ER_POST_SEND            = NN_HTTP_ER_POST_SEND,              //!< POSTリクエスト送信失敗
176         ER_POST_UNKNOWN_ENCTYPE = NN_HTTP_ER_POST_UNKNOWN_ENCTYPE,   //!< 不明なエンコードタイプ
177         ER_POST_NODATA          = NN_HTTP_ER_POST_NODATA,            //!< 送信データ設定無し
178 
179         /* SSL関連 */
180         ER_SSL                   = NN_HTTP_ER_SSL,                    //!< SSLエラー
181         ER_SSL_CERT_EXIST        = NN_HTTP_ER_SSL_CERT_EXIST,         //!< SSL 証明書設定済み(再登録前に削除が必要)
182         ER_SSL_NO_CA_CERT_STORE  = NN_HTTP_ER_SSL_NO_CA_CERT_STORE,   //!< SSL 該当するCA証明書ストアが登録されていない
183         ER_SSL_NO_CLIENT_CERT    = NN_HTTP_ER_SSL_NO_CLIENT_CERT,     //!< SSL 該当するクライアント証明書が登録されていない
184         ER_SSL_CA_CERT_STORE_MAX = NN_HTTP_ER_SSL_CA_CERT_STORE_MAX,  //!< SSL プロセスごとのCA証明書ストア同時登録最大数の証明書ストアがすでに登録されている。
185         ER_SSL_CLIENT_CERT_MAX   = NN_HTTP_ER_SSL_CLIENT_CERT_MAX,    //!< SSL プロセスごとのクライアント証明書同時登録最大数の証明書がすでに登録されている。
186         ER_SSL_FAIL_TO_CREATE_CERT_STORE = NN_HTTP_ER_SSL_FAIL_TO_CREATE_CERT_STORE,   //!< SSL 証明書ストアの作成に失敗
187         ER_SSL_FAIL_TO_CREATE_CLIENT_CERT = NN_HTTP_ER_SSL_FAIL_TO_CREATE_CLIENT_CERT, //!< SSL クライアント証明書の作成に失敗
188 
189         /* ソケット関連 */
190         ER_SOC_DNS              = NN_HTTP_ER_SOC_DNS,                //!< DNS名前解決失敗
191         ER_SOC_SEND             = NN_HTTP_ER_SOC_SEND,               //!< ソケットデータ送信失敗
192         ER_SOC_RECV             = NN_HTTP_ER_SOC_RECV,               //!< ソケットデータ受信失敗/
193         ER_SOC_CONN             = NN_HTTP_ER_SOC_CONN,               //!< ソケット接続失敗
194         ER_SOC_KEEPALIVE_DISCONNECTED = NN_HTTP_ER_SOC_KEEPALIVE_DISCONNECTED, //!< キープアライブ通信がサーバ側から切断された
195 
196         /* プロキシ関連*/
197         ER_GET_PROXY_SETTING    = NN_HTTP_ER_GET_PROXY_SETTING                   //!< 機器に設定されているProxy値の取得に失敗した。
198 
199     };
200 
201     namespace detail {
202         /**
203          * @brief  NHTTPのPermanentエラーを表すResultを返す。
204          * @param summary エラーを表すResult::Summary値。
205          * @param errCode エラーコード(nn::http::ResultCode列挙体のいずれかの値)
206          * @return 引数に対応するPermanentエラーを表すResult。
207         */
208         NN_DEFINE_RESULT_FUNC_LM(MakePermanentResult, Result::LEVEL_PERMANENT, Result::MODULE_NN_HTTP);
209 
210 
211         /**
212          * @brief  リターンコードに対して、それを表すResultを返す。
213          * @param returnCode リターンコード(nn::http::ResultCode列挙体のいずれかの値)
214          * @return 引数の内容を表すResult。
215         */
ChangeNetHttpRetCodeToResult(ResultCode returnCode)216         inline Result ChangeNetHttpRetCodeToResult(ResultCode returnCode)
217         {
218             if(returnCode == ER_NONE)
219             {
220                 return ResultSuccess();
221             }
222             else if(returnCode == ER_INVALID_PARAM)
223             {
224                 return MakePermanentResult(Result::SUMMARY_INVALID_ARGUMENT, returnCode);
225             }
226             else
227             {
228                 return MakePermanentResult(Result::SUMMARY_INVALID_STATE, returnCode);
229             }
230         }
231 
232         /**
233          * @brief  リターンコードに対して、それを表すResultを返す。
234          * @param returnCode リターンコード(nn::http::ResultCode列挙体の各要素の即値)
235          * @return 引数の内容を表すResult。
236         */
ChangeNetHttpRetCodeToResult(s32 returnCode)237         inline Result ChangeNetHttpRetCodeToResult(s32 returnCode)
238         {
239             return ChangeNetHttpRetCodeToResult(static_cast<ResultCode>(CHANGE_NHTTP_RESULT_CODE(returnCode)));
240         }
241     }
242 
243     /*!
244         :category   Result
245         @class nn::http::ResultInvalidStatusErr
246         @brief  不正なステータスを表します。
247     */
248     NN_DEFINE_RESULT_CONST_LM(
249         ResultInvalidStatusErr,
250         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_INVALID_STATUS
251     );
252 
253 
254     /*!
255         :category   Result
256         @class nn::http::ResultInvalidParamErr
257         @brief  不正なパラメータを表します。
258     */
259     NN_DEFINE_RESULT_CONST_LM(
260         ResultInvalidParamErr,
261         detail::MakePermanentResult, Result::SUMMARY_INVALID_ARGUMENT, ER_INVALID_PARAM
262     );
263 
264     /*!
265         :category   Result
266         @class nn::http::ResultOutOfMemoryErr
267         @brief  メモリの動的確保失敗を表します。
268     */
269     NN_DEFINE_RESULT_CONST_LM(
270         ResultOutOfMemoryErr,
271         detail::MakePermanentResult, Result::SUMMARY_OUT_OF_RESOURCE, ER_NOMEM
272     );
273 
274     /*!
275         :category   Result
276         @class nn::http::ResultCreateEventErr
277         @brief  イベント生成失敗を表します。
278     */
279     NN_DEFINE_RESULT_CONST_LM(
280         ResultCreateEventErr,
281         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_CREATE_EVENT
282     );
283 
284     /*!
285         :category   Result
286         @class nn::http::ResultCreateMutexErr
287         @brief  ミューテックス生成失敗を表します。
288     */
289     NN_DEFINE_RESULT_CONST_LM(
290         ResultCreateMutexErr,
291         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_CREATE_MUTEX
292     );
293 
294     /*!
295         :category   Result
296         @class nn::http::ResultCreateQueueErr
297         @brief  メッセージキュー生成失敗を表します。
298     */
299     NN_DEFINE_RESULT_CONST_LM(
300         ResultCreateQueueErr,
301         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_CREATE_QUEUE
302     );
303 
304     /*!
305         :category   Result
306         @class nn::http::ResultCreateThreadErr
307         @brief  スレッド生成失敗を表します。
308     */
309     NN_DEFINE_RESULT_CONST_LM(
310         ResultCreateThreadErr,
311         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_CREATE_THREAD
312     );
313 
314     /*!
315         :category   Result
316         @class nn::http::ResultNotConnectedErr
317         @brief  コネクションの未初期化を表します。
318     */
319     NN_DEFINE_RESULT_CONST_LM(
320         ResultNotConnectedErr,
321         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_CONNECTION_NOT_INITIALIZED
322     );
323 
324     /*!
325         :category   Result
326         @class nn::http::ResultAlreadyAssignHostErr
327         @brief  すでに通信先ホストが割り当て済みを表します。
328     */
329     NN_DEFINE_RESULT_CONST_LM(
330         ResultAlreadyAssignHostErr,
331         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_ALREADY_ASSIGN_HOST
332     );
333 
334     /*!
335         :category   Result
336         @class nn::http::ResultSessionErr
337         @brief  IPCセッションが不正であるを表します。
338     */
339     NN_DEFINE_RESULT_CONST_LM(
340         ResultSessionErr,
341         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_SESSION
342     );
343 
344     /*!
345         :category   Result
346         @class nn::http::ResultClientProcessMaxErr
347         @brief  同時利用可能なクライアントプロセス数のクライアントがすでに利用中であるを表します。
348     */
349     NN_DEFINE_RESULT_CONST_LM(
350         ResultClientProcessMaxErr,
351         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_CLIENT_PROCESS_MAX
352     );
353 
354     /*!
355         :category   Result
356         @class nn::http::ResultIpcSessionMaxErr
357         @brief  同時に接続可能なIPCセッション数のセッションがすでに接続されているを表します。
358     */
359     NN_DEFINE_RESULT_CONST_LM(
360         ResultIpcSessionMaxErr,
361         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_IPC_SESSION_MAX
362     );
363 
364     /*!
365         :category   Result
366         @class nn::http::ResultAlreadyInitializedErr
367         @brief  ライブラリが初期化済を表します。
368     */
369     NN_DEFINE_RESULT_CONST_LM(
370         ResultAlreadyInitializedErr,
371         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_ALREADY_INITIALIZED
372     );
373 
374     /*!
375         :category   Result
376         @class nn::http::ResultNotInitializedErr
377         @brief  ライブラリが未初期化を表します。
378     */
379     NN_DEFINE_RESULT_CONST_LM(
380         ResultNotInitializedErr,
381         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_NOT_INITIALIZED
382     );
383 
384     /*!
385         :category   Result
386         @class nn::http::ResultMessageSendToListenThreadErr
387         @brief  リスナースレッドメッセージキューへの送信失敗を表します。
388     */
389     NN_DEFINE_RESULT_CONST_LM(
390         ResultMessageSendToListenThreadErr,
391         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_MSGQ_SEND_LSN
392     );
393 
394     /*!
395         :category   Result
396         @class nn::http::ResultMessageRecvInListenThreadErr
397         @brief  リスナースレッドメッセージキュー受信失敗を表します。
398     */
399     NN_DEFINE_RESULT_CONST_LM(
400         ResultMessageRecvInListenThreadErr,
401         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_MSGQ_RECV_LSN
402     );
403 
404     /*!
405         :category   Result
406         @class nn::http::ResultMessageRecvInCommunicationThreadErr
407         @brief  通信スレッドメッセージキュー受信失敗を表します。
408     */
409     NN_DEFINE_RESULT_CONST_LM(
410         ResultMessageRecvInCommunicationThreadErr,
411         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_MSGQ_RECV_COMM
412     );
413 
414     /*!
415         :category   Result
416         @class nn::http::ResultConnectionNoMoreErr
417         @brief  接続ハンドル登録最大数越えを表します。
418     */
419     NN_DEFINE_RESULT_CONST_LM(
420         ResultConnectionNoMoreErr,
421         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_CONN_NOMORE
422     );
423 
424     /*!
425         :category   Result
426         @class nn::http::ResultNoSuchConnectionErr
427         @brief  存在しないコネクションに対する処理依頼を表します。
428     */
429     NN_DEFINE_RESULT_CONST_LM(
430         ResultNoSuchConnectionErr,
431         detail::MakePermanentResult, Result::SUMMARY_NOT_FOUND, ER_CONN_NOSUCH
432     );
433 
434     /*!
435         :category   Result
436         @class nn::http::ResultConnectionStatusErr
437         @brief  コネクションのステータス不正を表します。
438     */
439     NN_DEFINE_RESULT_CONST_LM(
440         ResultConnectionStatusErr,
441         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_CONN_STATUS
442     );
443 
444     /*!
445         :category   Result
446         @class nn::http::ResultConnectionAddErr
447         @brief  コネクションの登録失敗を表します。
448     */
449     NN_DEFINE_RESULT_CONST_LM(
450         ResultConnectionAddErr,
451         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_CONN_ADD
452     );
453 
454     /*!
455         :category   Result
456         @class nn::http::ResultConnectionCanceledErr
457         @brief  コネクションのキャンセルを表します。
458     */
459     NN_DEFINE_RESULT_CONST_LM(
460         ResultConnectionCanceledErr,
461         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_CONN_CANCELED
462     );
463 
464     /*!
465         :category   Result
466         @class nn::http::ResultConnectionHostMaxErr
467         @brief  同一ホストへの最大同時接続数越えを表します。
468     */
469     NN_DEFINE_RESULT_CONST_LM(
470         ResultConnectionHostMaxErr,
471         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_CONN_HOST_MAX
472     );
473 
474     /*!
475         :category   Result
476         @class nn::http::ResultConnectionProcessMaxErr
477         @brief  1プロセスの使用コネクション最大数越えを表します。
478     */
479     NN_DEFINE_RESULT_CONST_LM(
480         ResultConnectionProcessMaxErr,
481         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_CONN_PROCESS_MAX
482     );
483 
484     /*!
485         :category   Result
486         @class nn::http::ResultRequestUrlErr
487         @brief  不正なURLを表します。
488     */
489     NN_DEFINE_RESULT_CONST_LM(
490         ResultRequestUrlErr,
491         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_REQ_URL
492     );
493 
494     /*!
495         :category   Result
496         @class nn::http::ResultRequestPortErr
497         @brief  不正な通信先ポート番号を表します。
498     */
499     NN_DEFINE_RESULT_CONST_LM(
500         ResultRequestPortErr,
501         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_REQ_CONNMSG_PORT
502     );
503 
504     /*!
505         :category   Result
506         @class nn::http::ResultRequestUnknownMethodErr
507         @brief  認識できないメソッドを表します。
508     */
509     NN_DEFINE_RESULT_CONST_LM(
510         ResultRequestUnknownMethodErr,
511         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_REQ_UNKNOWN_METHOD
512     );
513 
514 
515     /*!
516         :category   Result
517         @class nn::http::ResultRequestHeaderErr
518         @brief  不正なHTTPヘッダを表します。
519     */
520     NN_DEFINE_RESULT_CONST_LM(
521         ResultRequestHeaderErr,
522         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_RES_HEADER
523     );
524 
525     /*!
526         :category   Result
527         @class nn::http::ResultRequestNoNewLineErr
528         @brief  HTTPヘッダ次行なしを表します。
529     */
530     NN_DEFINE_RESULT_CONST_LM(
531         ResultRequestNoNewLineErr,
532         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_RES_NONEWLINE
533     );
534 
535     /*!
536         :category   Result
537         @class nn::http::ResultBodyBufErr
538         @brief  HTTPボディ受信バッファエラーを表します。
539     */
540     NN_DEFINE_RESULT_CONST_LM(
541         ResultBodyBufErr,
542         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_RES_BODYBUF
543     );
544 
545     /*!
546         :category   Result
547         @class nn::http::ResultBodyBufShortage
548         @brief  HTTP Body受信バッファの容量不足を表します。
549     */
550     NN_DEFINE_RESULT_CONST_LM(
551         ResultBodyBufShortage,
552         detail::MakePermanentResult, Result::SUMMARY_WOULD_BLOCK, ER_RES_BODYBUF_SHORTAGE
553     );
554 
555     /*!
556         :category   Result
557         @class nn::http::ResultPostAddedAnotherErr
558         @brief  POSTデータ追加失敗を表します。
559     */
560     NN_DEFINE_RESULT_CONST_LM(
561         ResultPostAddedAnotherErr,
562         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_POST_ADDED_ANOTHER
563     );
564 
565     /*!
566         :category   Result
567         @class nn::http::ResultPostBoundaryErr
568         @brief  POSTデータのBoundaryが正しく設定できないを表します。
569     */
570     NN_DEFINE_RESULT_CONST_LM(
571         ResultPostBoundaryErr,
572         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_POST_BOUNDARY
573     );
574 
575     /*!
576         :category   Result
577         @class nn::http::ResultPostSendErr
578         @brief  POSTリクエスト送信失敗を表します。
579     */
580     NN_DEFINE_RESULT_CONST_LM(
581         ResultPostSendErr,
582         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_POST_SEND
583     );
584 
585     /*!
586         :category   Result
587         @class nn::http::ResultPostUnknownEnctypeErr
588         @brief  POST用として不明なエンコードタイプを表します。
589     */
590     NN_DEFINE_RESULT_CONST_LM(
591         ResultPostUnknownEnctypeErr,
592         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_POST_UNKNOWN_ENCTYPE
593     );
594 
595     /*!
596         :category   Result
597         @class nn::http::ResultPostNoDataErr
598         @brief  POST用の送信データ設定無しを表します。
599     */
600     NN_DEFINE_RESULT_CONST_LM(
601         ResultPostNoDataErr,
602         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_POST_NODATA
603     );
604 
605 
606     /*!
607         :category   Result
608         @class nn::http::ResultSslErr
609         @brief  SSLエラーを表します。
610     */
611     NN_DEFINE_RESULT_CONST_LM(
612         ResultSslErr,
613         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_SSL
614     );
615 
616     /*!
617         :category   Result
618         @class nn::http::ResultCertExistErr
619         @brief  SSL 証明書設定済み(再登録前に削除が必要)を表します。
620     */
621     NN_DEFINE_RESULT_CONST_LM(
622         ResultCertExistErr,
623         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_SSL_CERT_EXIST
624     );
625 
626     /*!
627         :category   Result
628         @class nn::http::ResultNoCaCertStoreErr
629         @brief  SSL 該当するCA証明書ストアが登録されていないを表します。
630     */
631     NN_DEFINE_RESULT_CONST_LM(
632         ResultNoCaCertStoreErr,
633         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_SSL_NO_CA_CERT_STORE
634     );
635 
636     /*!
637         :category   Result
638         @class nn::http::ResultNoClientCertErr
639         @brief  SSL 該当するクライアント証明書が登録されていないを表します。
640     */
641     NN_DEFINE_RESULT_CONST_LM(
642         ResultNoClientCertErr,
643         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_SSL_NO_CLIENT_CERT
644     );
645 
646     /*!
647         :category   Result
648         @class nn::http::ResultCaCertStoreMaxErr
649         @brief  SSL プロセスごとのCA証明書ストア同時登録最大数の証明書ストアがすでに登録されているを表します。
650     */
651     NN_DEFINE_RESULT_CONST_LM(
652         ResultCaCertStoreMaxErr,
653         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_SSL_CA_CERT_STORE_MAX
654     );
655 
656     /*!
657         :category   Result
658         @class nn::http::ResultClientCertMaxErr
659         @brief  SSL プロセスごとのクライアント証明書同時登録最大数の証明書がすでに登録されているを表します。
660     */
661     NN_DEFINE_RESULT_CONST_LM(
662         ResultClientCertMaxErr,
663         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_SSL_CLIENT_CERT_MAX
664     );
665 
666     /*!
667         :category   Result
668         @class nn::http::ResultFailToCreateCertStoreErr
669         @brief  SSL 証明書ストアの作成に失敗を表します。
670     */
671     NN_DEFINE_RESULT_CONST_LM(
672         ResultFailToCreateCertStoreErr,
673         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_SSL_FAIL_TO_CREATE_CERT_STORE
674     );
675 
676     /*!
677         :category   Result
678         @class nn::http::ResultFailToCreateClientCertErr
679         @brief  SSL クライアント証明書の作成に失敗を表します。
680     */
681     NN_DEFINE_RESULT_CONST_LM(
682         ResultFailToCreateClientCertErr,
683         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_SSL_FAIL_TO_CREATE_CLIENT_CERT
684     );
685 
686     /*!
687         :category   Result
688         @class nn::http::ResultDnsResolutionErr
689         @brief  DNS名前解決失敗を表します。
690     */
691     NN_DEFINE_RESULT_CONST_LM(
692         ResultDnsResolutionErr,
693         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_SOC_DNS
694     );
695 
696     /*!
697         :category   Result
698         @class nn::http::ResultSocketSendErr
699         @brief  ソケットデータ送信失敗を表します。
700     */
701     NN_DEFINE_RESULT_CONST_LM(
702         ResultSocketSendErr,
703         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_SOC_SEND
704     );
705 
706     /*!
707         :category   Result
708         @class nn::http::ResultSocketReceiveErr
709         @brief  ソケットデータ受信失敗を表します。
710     */
711     NN_DEFINE_RESULT_CONST_LM(
712         ResultSocketReceiveErr,
713         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_SOC_RECV
714     );
715 
716     /*!
717         :category   Result
718         @class nn::http::ResultSocketConnectErr
719         @brief  ソケット接続失敗を表します。
720     */
721     NN_DEFINE_RESULT_CONST_LM(
722         ResultSocketConnectErr,
723         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_SOC_CONN
724     );
725 
726     /*!
727         :category   Result
728         @class nn::http::ResultGetProxySettingErr
729         @brief  機器に設定されているProxy値の取得に失敗を表します。
730     */
731     NN_DEFINE_RESULT_CONST_LM(
732         ResultGetProxySettingErr,
733         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_GET_PROXY_SETTING
734     );
735 
736     /*!
737         :category   Result
738         @class nn::http::ResultNotImplementedErr
739         @brief  処理が未実装を表します。
740     */
741     NN_DEFINE_RESULT_CONST_LM(
742         ResultNotImplementedErr,
743         detail::MakePermanentResult, Result::SUMMARY_INTERNAL, nn::Result::DESCRIPTION_NOT_IMPLEMENTED
744     );
745 
746     /*!
747         :category   Result
748         @class nn::http::ResultTimeout
749         @brief  タイムアウトを表します。
750     */
751     NN_DEFINE_RESULT_CONST_LM(
752         ResultTimeout,
753         detail::MakePermanentResult, Result::SUMMARY_NOTHING_HAPPENED, ER_TIMEOUT
754     );
755 
756     /*!
757         :category   Result
758         @class nn::http::ResultSocketKeepAliveDisconnected
759         @brief  キープアライブ通信がサーバ側から切断されたを表します。
760     */
761     NN_DEFINE_RESULT_CONST_LM(
762         ResultSocketKeepAliveDisconnected,
763         detail::MakePermanentResult, Result::SUMMARY_INVALID_STATE, ER_SOC_KEEPALIVE_DISCONNECTED
764     );
765 }
766 }
767 
768 #endif // __cplusplus
769 
770 
771 
772 
773 
774 #endif /* NN_NHTTP_NHTTP_RESULT_H_ */
775