1 /*---------------------------------------------------------------------------*
2   Project:  Horizon
3   File:     friends_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: 25472 $
14  *---------------------------------------------------------------------------*/
15 
16 #ifndef NN_FRIENDS_CTR_FRIENDS_RESULT_H_
17 #define NN_FRIENDS_CTR_FRIENDS_RESULT_H_
18 
19 #ifdef __cplusplus
20 
21 #include <nn/Result.h>
22 
23 namespace nn {
24 namespace friends {
25 namespace CTR {
26 
27     namespace detail {
28         static const u32 DESCRIPTION_FACILITY_SHIFT = 5;
29         static const u32 DESCRIPTION_RETURN_CODE_UNDEFINED = (1 << (DESCRIPTION_FACILITY_SHIFT + 1)) - 1;
30     }
31 
32     enum Description
33     {
34         DESCRIPTION_FACILITY_CORE           = 1 << detail::DESCRIPTION_FACILITY_SHIFT,
35         DESCRIPTION_FACILITY_DDL            = 2 << detail::DESCRIPTION_FACILITY_SHIFT,
36         DESCRIPTION_FACILITY_RENDEZVOUS     = 3 << detail::DESCRIPTION_FACILITY_SHIFT,
37         DESCRIPTION_FACILITY_PYTHONCORE     = 4 << detail::DESCRIPTION_FACILITY_SHIFT,
38         DESCRIPTION_FACILITY_TRANSPORT      = 5 << detail::DESCRIPTION_FACILITY_SHIFT,
39         DESCRIPTION_FACILITY_DOCORE         = 6 << detail::DESCRIPTION_FACILITY_SHIFT,
40         DESCRIPTION_FACILITY_FPD            = 7 << detail::DESCRIPTION_FACILITY_SHIFT,
41         DESCRIPTION_FACILITY_AUTHENTICATION = 8 << detail::DESCRIPTION_FACILITY_SHIFT,
42 
43         DESCRIPTION_CORE_SUCCESS                                     = DESCRIPTION_FACILITY_CORE + 0,
44         DESCRIPTION_CORE_SUCCESS_PENDING                             = DESCRIPTION_FACILITY_CORE + 1,
45         DESCRIPTION_CORE_UNKNOWN                                     = DESCRIPTION_FACILITY_CORE + 2,
46         DESCRIPTION_CORE_NOT_IMPLEMENTED                             = DESCRIPTION_FACILITY_CORE + 3,
47         DESCRIPTION_CORE_INVALID_POINTER                             = DESCRIPTION_FACILITY_CORE + 4,
48         DESCRIPTION_CORE_OPERATION_ABORTED                           = DESCRIPTION_FACILITY_CORE + 5,
49         DESCRIPTION_CORE_EXCEPTION                                   = DESCRIPTION_FACILITY_CORE + 6,
50         DESCRIPTION_CORE_ACCESS_DENIED                               = DESCRIPTION_FACILITY_CORE + 7,
51         DESCRIPTION_CORE_INVALID_HANDLE                              = DESCRIPTION_FACILITY_CORE + 8,
52         DESCRIPTION_CORE_INVALID_INDEX                               = DESCRIPTION_FACILITY_CORE + 9,
53         DESCRIPTION_CORE_OUT_OF_MEMORY                               = DESCRIPTION_FACILITY_CORE + 10,
54         DESCRIPTION_CORE_INVALID_ARGUMENT                            = DESCRIPTION_FACILITY_CORE + 11,
55         DESCRIPTION_CORE_TIMEOUT                                     = DESCRIPTION_FACILITY_CORE + 12,
56         DESCRIPTION_CORE_INITIALIZATION_FAILURE                      = DESCRIPTION_FACILITY_CORE + 13,
57         DESCRIPTION_CORE_CALL_INITIATION_FAILURE                     = DESCRIPTION_FACILITY_CORE + 14,
58         DESCRIPTION_CORE_REGISTRATION_ERROR                          = DESCRIPTION_FACILITY_CORE + 15,
59         DESCRIPTION_CORE_BUFFER_OVERFLOW                             = DESCRIPTION_FACILITY_CORE + 16,
60         DESCRIPTION_CORE_INVALID_LOCK_STATE                          = DESCRIPTION_FACILITY_CORE + 17,
61         DESCRIPTION_CORE_UNDEFINED                                   = DESCRIPTION_FACILITY_CORE + detail::DESCRIPTION_RETURN_CODE_UNDEFINED,
62 
63         DESCRIPTION_DDL_SUCCESS                                      = DESCRIPTION_FACILITY_DDL + 0,
64         DESCRIPTION_DDL_INVALID_SIGNATURE                            = DESCRIPTION_FACILITY_DDL + 1,
65         DESCRIPTION_DDL_INCORRECT_VERSION                            = DESCRIPTION_FACILITY_DDL + 2,
66         DESCRIPTION_DDL_UNDEFINED                                    = DESCRIPTION_FACILITY_DDL + detail::DESCRIPTION_RETURN_CODE_UNDEFINED,
67 
68         DESCRIPTION_RENDEZVOUS_SUCCESS                               = DESCRIPTION_FACILITY_RENDEZVOUS + 0,
69         DESCRIPTION_RENDEZVOUS_CONNECTION_FAILURE                    = DESCRIPTION_FACILITY_RENDEZVOUS + 1,
70         DESCRIPTION_RENDEZVOUS_NOT_AUTHENTICATED                     = DESCRIPTION_FACILITY_RENDEZVOUS + 2,
71         DESCRIPTION_RENDEZVOUS_INVALID_USERNAME                      = DESCRIPTION_FACILITY_RENDEZVOUS + 3,
72         DESCRIPTION_RENDEZVOUS_INVALID_PASSWORD                      = DESCRIPTION_FACILITY_RENDEZVOUS + 4,
73         DESCRIPTION_RENDEZVOUS_USERNAME_ALREADY_EXISTS               = DESCRIPTION_FACILITY_RENDEZVOUS + 5,
74         DESCRIPTION_RENDEZVOUS_ACCOUNT_DISABLED                      = DESCRIPTION_FACILITY_RENDEZVOUS + 6,
75         DESCRIPTION_RENDEZVOUS_ACCOUNT_EXPIRED                       = DESCRIPTION_FACILITY_RENDEZVOUS + 7,
76         DESCRIPTION_RENDEZVOUS_CONCURRENT_LOGIN_DENIED               = DESCRIPTION_FACILITY_RENDEZVOUS + 8,
77         DESCRIPTION_RENDEZVOUS_ENCRYPTION_FAILURE                    = DESCRIPTION_FACILITY_RENDEZVOUS + 9,
78         DESCRIPTION_RENDEZVOUS_INVALID_PID                           = DESCRIPTION_FACILITY_RENDEZVOUS + 10,
79         DESCRIPTION_RENDEZVOUS_MAX_CONNECTIONS_REACHED               = DESCRIPTION_FACILITY_RENDEZVOUS + 11,
80         DESCRIPTION_RENDEZVOUS_INVALID_GID                           = DESCRIPTION_FACILITY_RENDEZVOUS + 12,
81         DESCRIPTION_RENDEZVOUS_INVALID_THREAD_ID                     = DESCRIPTION_FACILITY_RENDEZVOUS + 13,
82         DESCRIPTION_RENDEZVOUS_INVALID_OPERATION_IN_LIVE_ENVIRONMENT = DESCRIPTION_FACILITY_RENDEZVOUS + 14,
83         DESCRIPTION_RENDEZVOUS_DUPLICATE_ENTRY                       = DESCRIPTION_FACILITY_RENDEZVOUS + 15,
84         DESCRIPTION_RENDEZVOUS_CONTROL_SCRIPT_FAILURE                = DESCRIPTION_FACILITY_RENDEZVOUS + 16,
85         DESCRIPTION_RENDEZVOUS_CLASS_NOT_FOUND                       = DESCRIPTION_FACILITY_RENDEZVOUS + 17,
86         DESCRIPTION_RENDEZVOUS_SESSION_VOID                          = DESCRIPTION_FACILITY_RENDEZVOUS + 18,
87         DESCRIPTION_RENDEZVOUS_LSP_GATEWAY_UNREACHABLE               = DESCRIPTION_FACILITY_RENDEZVOUS + 19,
88         DESCRIPTION_RENDEZVOUS_DDL_MISMATCH                          = DESCRIPTION_FACILITY_RENDEZVOUS + 20,
89         DESCRIPTION_RENDEZVOUS_INVALID_FTP_INFO                      = DESCRIPTION_FACILITY_RENDEZVOUS + 21,
90         DESCRIPTION_RENDEZVOUS_SESSION_FULL                          = DESCRIPTION_FACILITY_RENDEZVOUS + 22,
91         DESCRIPTION_RENDEZVOUS_UNDEFINED                             = DESCRIPTION_FACILITY_RENDEZVOUS + detail::DESCRIPTION_RETURN_CODE_UNDEFINED,
92 
93         DESCRIPTION_PYTHONCORE_SUCCESS                               = DESCRIPTION_FACILITY_PYTHONCORE + 0,
94         DESCRIPTION_PYTHONCORE_EXCEPTION                             = DESCRIPTION_FACILITY_PYTHONCORE + 1,
95         DESCRIPTION_PYTHONCORE_TYPE_ERROR                            = DESCRIPTION_FACILITY_PYTHONCORE + 2,
96         DESCRIPTION_PYTHONCORE_INDEX_ERROR                           = DESCRIPTION_FACILITY_PYTHONCORE + 3,
97         DESCRIPTION_PYTHONCORE_INVALID_REFERENCE                     = DESCRIPTION_FACILITY_PYTHONCORE + 4,
98         DESCRIPTION_PYTHONCORE_CALL_FAILURE                          = DESCRIPTION_FACILITY_PYTHONCORE + 5,
99         DESCRIPTION_PYTHONCORE_MEMORY_ERROR                          = DESCRIPTION_FACILITY_PYTHONCORE + 6,
100         DESCRIPTION_PYTHONCORE_KEY_ERROR                             = DESCRIPTION_FACILITY_PYTHONCORE + 7,
101         DESCRIPTION_PYTHONCORE_OPERATION_ERROR                       = DESCRIPTION_FACILITY_PYTHONCORE + 8,
102         DESCRIPTION_PYTHONCORE_CONVERSION_ERROR                      = DESCRIPTION_FACILITY_PYTHONCORE + 9,
103         DESCRIPTION_PYTHONCORE_VALIDATION_ERROR                      = DESCRIPTION_FACILITY_PYTHONCORE + 10,
104         DESCRIPTION_PYTHONCORE_UNDEFINED                             = DESCRIPTION_FACILITY_PYTHONCORE + detail::DESCRIPTION_RETURN_CODE_UNDEFINED,
105 
106         DESCRIPTION_TRANSPORT_SUCCESS                                = DESCRIPTION_FACILITY_TRANSPORT + 0,
107         DESCRIPTION_TRANSPORT_UNKNOWN                                = DESCRIPTION_FACILITY_TRANSPORT + 1,
108         DESCRIPTION_TRANSPORT_CONNECTION_FAILURE                     = DESCRIPTION_FACILITY_TRANSPORT + 2,
109         DESCRIPTION_TRANSPORT_INVALID_URL                            = DESCRIPTION_FACILITY_TRANSPORT + 3,
110         DESCRIPTION_TRANSPORT_INVALID_KEY                            = DESCRIPTION_FACILITY_TRANSPORT + 4,
111         DESCRIPTION_TRANSPORT_INVALID_URL_TYPE                       = DESCRIPTION_FACILITY_TRANSPORT + 5,
112         DESCRIPTION_TRANSPORT_DUPLICATE_ENDPOINT                     = DESCRIPTION_FACILITY_TRANSPORT + 6,
113         DESCRIPTION_TRANSPORT_IO_ERROR                               = DESCRIPTION_FACILITY_TRANSPORT + 7,
114         DESCRIPTION_TRANSPORT_TIMEOUT                                = DESCRIPTION_FACILITY_TRANSPORT + 8,
115         DESCRIPTION_TRANSPORT_CONNECTION_RESET                       = DESCRIPTION_FACILITY_TRANSPORT + 9,
116         DESCRIPTION_TRANSPORT_INCORRECT_REMOTE_AUTHENTICATION        = DESCRIPTION_FACILITY_TRANSPORT + 10,
117         DESCRIPTION_TRANSPORT_SERVER_REQUEST_ERROR                   = DESCRIPTION_FACILITY_TRANSPORT + 11,
118         DESCRIPTION_TRANSPORT_DECOMPRESSION_FAILURE                  = DESCRIPTION_FACILITY_TRANSPORT + 12,
119         DESCRIPTION_TRANSPORT_CONGESTED_END_POINT                    = DESCRIPTION_FACILITY_TRANSPORT + 13,
120         DESCRIPTION_TRANSPORT_UPNP_CANNOT_INIT                       = DESCRIPTION_FACILITY_TRANSPORT + 14,
121         DESCRIPTION_TRANSPORT_UPNP_CANNOT_ADD_MAPPING                = DESCRIPTION_FACILITY_TRANSPORT + 15,
122         DESCRIPTION_TRANSPORT_NAT_PMP_CANNOT_INIT                    = DESCRIPTION_FACILITY_TRANSPORT + 16,
123         DESCRIPTION_TRANSPORT_NAT_PMP_CANNOT_ADD_MAPPING             = DESCRIPTION_FACILITY_TRANSPORT + 17,
124         DESCRIPTION_TRANSPORT_UNDEFINED                              = DESCRIPTION_FACILITY_TRANSPORT + detail::DESCRIPTION_RETURN_CODE_UNDEFINED,
125 
126         DESCRIPTION_DOCORE_SUCCESS                                   = DESCRIPTION_FACILITY_DOCORE + 0,
127         DESCRIPTION_DOCORE_CALL_POSTPONED                            = DESCRIPTION_FACILITY_DOCORE + 1,
128         DESCRIPTION_DOCORE_STATION_NOT_REACHED                       = DESCRIPTION_FACILITY_DOCORE + 2,
129         DESCRIPTION_DOCORE_TARGET_STATION_DISCONNECT                 = DESCRIPTION_FACILITY_DOCORE + 3,
130         DESCRIPTION_DOCORE_LOCAL_STATION_LEAVING                     = DESCRIPTION_FACILITY_DOCORE + 4,
131         DESCRIPTION_DOCORE_OBJECT_NOT_FOUND                          = DESCRIPTION_FACILITY_DOCORE + 5,
132         DESCRIPTION_DOCORE_INVALID_ROLE                              = DESCRIPTION_FACILITY_DOCORE + 6,
133         DESCRIPTION_DOCORE_CALL_TIMEOUT                              = DESCRIPTION_FACILITY_DOCORE + 7,
134         DESCRIPTION_DOCORE_RMC_DISPATCH_FAILED                       = DESCRIPTION_FACILITY_DOCORE + 8,
135         DESCRIPTION_DOCORE_MIGRATION_IN_PROGRESS                     = DESCRIPTION_FACILITY_DOCORE + 9,
136         DESCRIPTION_DOCORE_NO_AUTHORITY                              = DESCRIPTION_FACILITY_DOCORE + 10,
137         DESCRIPTION_DOCORE_NO_TARGET_STATION_SPECIFIED               = DESCRIPTION_FACILITY_DOCORE + 11,
138         DESCRIPTION_DOCORE_JOIN_FAILED                               = DESCRIPTION_FACILITY_DOCORE + 12,
139         DESCRIPTION_DOCORE_JOIN_DENIED                               = DESCRIPTION_FACILITY_DOCORE + 13,
140         DESCRIPTION_DOCORE_CONNECTIVITY_TEST_FAILED                  = DESCRIPTION_FACILITY_DOCORE + 14,
141         DESCRIPTION_DOCORE_UNKNOWN                                   = DESCRIPTION_FACILITY_DOCORE + 15,
142         DESCRIPTION_DOCORE_UNFREED_REFERENCES                        = DESCRIPTION_FACILITY_DOCORE + 16,
143         DESCRIPTION_DOCORE_UNDEFINED                                 = DESCRIPTION_FACILITY_DOCORE + detail::DESCRIPTION_RETURN_CODE_UNDEFINED,
144 
145         DESCRIPTION_FPD_SUCCESS                                      = DESCRIPTION_FACILITY_FPD + 0,
146         DESCRIPTION_RMC_NOT_CALLED                                   = DESCRIPTION_FACILITY_FPD + 1,
147         DESCRIPTION_DAEMON_NOT_INITIALIZED                           = DESCRIPTION_FACILITY_FPD + 2,
148         DESCRIPTION_DAEMON_ALREADY_INITIALIZED                       = DESCRIPTION_FACILITY_FPD + 3,
149         DESCRIPTION_NOT_CONNECTED                                    = DESCRIPTION_FACILITY_FPD + 4,
150         DESCRIPTION_CONNECTED                                        = DESCRIPTION_FACILITY_FPD + 5,
151         DESCRIPTION_INITIALIZATION_FAILURE                           = DESCRIPTION_FACILITY_FPD + 6,
152         DESCRIPTION_OUT_OF_MEMORY                                    = DESCRIPTION_FACILITY_FPD + 7,
153         DESCRIPTION_RMC_FAILED                                       = DESCRIPTION_FACILITY_FPD + 8,
154         DESCRIPTION_INVALID_ARGUMENT                                 = DESCRIPTION_FACILITY_FPD + 9,
155         DESCRIPTION_INVALID_LOCAL_ACCOUNT_ID                         = DESCRIPTION_FACILITY_FPD + 10,
156         DESCRIPTION_INVALID_PRINCIPAL_ID                             = DESCRIPTION_FACILITY_FPD + 11,
157         DESCRIPTION_INVALID_LOCAL_FRIEND_CODE                        = DESCRIPTION_FACILITY_FPD + 12,
158         DESCRIPTION_LOCAL_ACCOUNT_NOT_EXISTS                         = DESCRIPTION_FACILITY_FPD + 13,
159         DESCRIPTION_LOCAL_ACCOUNT_NOT_LOADED                         = DESCRIPTION_FACILITY_FPD + 14,
160         DESCRIPTION_LOCAL_ACCOUNT_ALREADY_LOADED                     = DESCRIPTION_FACILITY_FPD + 15,
161         DESCRIPTION_FRIEND_ALREADY_EXISTS                            = DESCRIPTION_FACILITY_FPD + 16,
162         DESCRIPTION_FRIEND_NOT_EXISTS                                = DESCRIPTION_FACILITY_FPD + 17,
163         DESCRIPTION_FRIEND_NUM_MAX                                   = DESCRIPTION_FACILITY_FPD + 18,
164         DESCRIPTION_NOT_FRIEND                                       = DESCRIPTION_FACILITY_FPD + 19,
165         DESCRIPTION_FILE_IO_ERROR                                    = DESCRIPTION_FACILITY_FPD + 20,
166         DESCRIPTION_P2P_INTERNET_PROHIBITED                          = DESCRIPTION_FACILITY_FPD + 21,
167         DESCRIPTION_UNKNOWN                                          = DESCRIPTION_FACILITY_FPD + 22,
168         DESCRIPTION_FPD_UNDEFINED                                    = DESCRIPTION_FACILITY_FPD + detail::DESCRIPTION_RETURN_CODE_UNDEFINED,
169 
170         DESCRIPTION_AUTHENTICATION_SUCCESS                           = DESCRIPTION_FACILITY_AUTHENTICATION + 0,
171         DESCRIPTION_AUTHENTICATION_NAS_AUTHENTICATE_ERROR            = DESCRIPTION_FACILITY_AUTHENTICATION + 1,
172         DESCRIPTION_AUTHENTICATION_TOKEN_PARSE_ERROR                 = DESCRIPTION_FACILITY_AUTHENTICATION + 2,
173         DESCRIPTION_AUTHENTICATION_HTTP_CONNECTION_ERROR             = DESCRIPTION_FACILITY_AUTHENTICATION + 3,
174         DESCRIPTION_AUTHENTICATION_HTTP_DNS_ERROR                    = DESCRIPTION_FACILITY_AUTHENTICATION + 4,
175         DESCRIPTION_AUTHENTICATION_HTTP_GET_PROXY_SETTING            = DESCRIPTION_FACILITY_AUTHENTICATION + 5,
176         DESCRIPTION_AUTHENTICATION_TOKEN_EXPIRED                     = DESCRIPTION_FACILITY_AUTHENTICATION + 6,
177         DESCRIPTION_AUTHENTICATION_VALIDATION_FAILED                 = DESCRIPTION_FACILITY_AUTHENTICATION + 7,
178         DESCRIPTION_AUTHENTICATION_INVALID_PARAM                     = DESCRIPTION_FACILITY_AUTHENTICATION + 8,
179         DESCRIPTION_AUTHENTICATION_PRINCIPAL_ID_UNMATCHED            = DESCRIPTION_FACILITY_AUTHENTICATION + 9,
180         DESCRIPTION_AUTHENTICATION_MOVE_COUNT_UNMATCH                = DESCRIPTION_FACILITY_AUTHENTICATION + 10,
181         DESCRIPTION_AUTHENTICATION_UNDER_MAINTENANCE                 = DESCRIPTION_FACILITY_AUTHENTICATION + 11,
182         DESCRIPTION_AUTHENTICATION_UNKNOWN                           = DESCRIPTION_FACILITY_AUTHENTICATION + 12,
183         DESCRIPTION_AUTHENTICATION_UNDEFINED                         = DESCRIPTION_FACILITY_AUTHENTICATION + detail::DESCRIPTION_RETURN_CODE_UNDEFINED,
184 
185         DESCRIPTION_FACILITY_CTR        = 0 << detail::DESCRIPTION_FACILITY_SHIFT,
186 
187         DESCRIPTION_INVALID_FRIEND_CODE = DESCRIPTION_FACILITY_CTR + 1,
188         DESCRIPTION_NOT_LOGGED_IN,
189         DESCRIPTION_NOT_FRIENDS_RESULT,
190         DESCRIPTION_UNDEFINED_FACILITY
191     };
192 
193 
194     NN_DEFINE_RESULT_CONST(
195         ResultRmcNotCalled,
196         Result::LEVEL_SUCCESS,   Result::SUMMARY_SUCCESS,          Result::MODULE_NN_FRIENDS,
197         DESCRIPTION_RMC_NOT_CALLED
198     );
199 
200     NN_DEFINE_RESULT_CONST(
201         ResultDaemonNotInitialized,
202         Result::LEVEL_FATAL,     Result::SUMMARY_INVALID_STATE,    Result::MODULE_NN_FRIENDS,
203         DESCRIPTION_DAEMON_NOT_INITIALIZED
204     );
205 
206     NN_DEFINE_RESULT_CONST(
207         ResultDaemonAlreadyInitialized,
208         Result::LEVEL_FATAL,     Result::SUMMARY_INVALID_STATE,    Result::MODULE_NN_FRIENDS,
209         DESCRIPTION_DAEMON_ALREADY_INITIALIZED
210     );
211 
212     NN_DEFINE_RESULT_CONST(
213         ResultNotConnected,
214         Result::LEVEL_PERMANENT, Result::SUMMARY_INVALID_STATE,    Result::MODULE_NN_FRIENDS,
215         DESCRIPTION_NOT_CONNECTED
216     );
217 
218     NN_DEFINE_RESULT_CONST(
219         ResultConnected,
220         Result::LEVEL_PERMANENT, Result::SUMMARY_INVALID_STATE,    Result::MODULE_NN_FRIENDS,
221         DESCRIPTION_CONNECTED
222     );
223 
224     NN_DEFINE_RESULT_CONST(
225         ResultInitializationFailure,
226         Result::LEVEL_FATAL,     Result::SUMMARY_INTERNAL,         Result::MODULE_NN_FRIENDS,
227         DESCRIPTION_INITIALIZATION_FAILURE
228     );
229 
230     NN_DEFINE_RESULT_CONST(
231         ResultOutOfMemory,
232         Result::LEVEL_STATUS,    Result::SUMMARY_OUT_OF_RESOURCE,  Result::MODULE_NN_FRIENDS,
233         DESCRIPTION_OUT_OF_MEMORY
234     );
235 
236     NN_DEFINE_RESULT_CONST(
237         ResultRmcFailed,
238         Result::LEVEL_PERMANENT, Result::SUMMARY_CANCELLED,        Result::MODULE_NN_FRIENDS,
239         DESCRIPTION_RMC_FAILED
240     );
241 
242     NN_DEFINE_RESULT_CONST(
243         ResultInvalidArgument,
244         Result::LEVEL_USAGE,     Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_FRIENDS,
245         DESCRIPTION_INVALID_ARGUMENT
246     );
247 
248     NN_DEFINE_RESULT_CONST(
249         ResultInvalidLocalAccountId,
250         Result::LEVEL_USAGE,     Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_FRIENDS,
251         DESCRIPTION_INVALID_LOCAL_ACCOUNT_ID
252     );
253 
254     NN_DEFINE_RESULT_CONST(
255         ResultInvalidPrincipalId,
256         Result::LEVEL_USAGE,     Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_FRIENDS,
257         DESCRIPTION_INVALID_PRINCIPAL_ID
258     );
259 
260     NN_DEFINE_RESULT_CONST(
261         ResultInvalidLocalFriendCode,
262         Result::LEVEL_USAGE,     Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_FRIENDS,
263         DESCRIPTION_INVALID_LOCAL_FRIEND_CODE
264     );
265 
266     NN_DEFINE_RESULT_CONST(
267         ResultLocalAccountNotExists,
268         Result::LEVEL_STATUS,    Result::SUMMARY_NOT_FOUND,        Result::MODULE_NN_FRIENDS,
269         DESCRIPTION_LOCAL_ACCOUNT_NOT_EXISTS
270     );
271 
272     NN_DEFINE_RESULT_CONST(
273         ResultLocalAccountNotLoaded,
274         Result::LEVEL_FATAL,     Result::SUMMARY_INVALID_STATE,    Result::MODULE_NN_FRIENDS,
275         DESCRIPTION_LOCAL_ACCOUNT_NOT_LOADED
276     );
277 
278     NN_DEFINE_RESULT_CONST(
279         ResultLocalAccountAlreadyLoaded,
280         Result::LEVEL_PERMANENT, Result::SUMMARY_INVALID_STATE,    Result::MODULE_NN_FRIENDS,
281         DESCRIPTION_LOCAL_ACCOUNT_ALREADY_LOADED
282     );
283 
284     NN_DEFINE_RESULT_CONST(
285         ResultFriendAlreadyExists,
286         Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT,   Result::MODULE_NN_FRIENDS,
287         DESCRIPTION_FRIEND_ALREADY_EXISTS
288     );
289 
290     NN_DEFINE_RESULT_CONST(
291         ResultFriendNotExists,
292         Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT,   Result::MODULE_NN_FRIENDS,
293         DESCRIPTION_FRIEND_NOT_EXISTS
294     );
295 
296     NN_DEFINE_RESULT_CONST(
297         ResultFriendNumMax,
298         Result::LEVEL_PERMANENT, Result::SUMMARY_OUT_OF_RESOURCE,  Result::MODULE_NN_FRIENDS,
299         DESCRIPTION_FRIEND_NUM_MAX
300     );
301 
302     NN_DEFINE_RESULT_CONST(
303         ResultNotFriend,
304         Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT,   Result::MODULE_NN_FRIENDS,
305         DESCRIPTION_NOT_FRIEND
306     );
307 
308     NN_DEFINE_RESULT_CONST(
309         ResultFileIoError,
310         Result::LEVEL_PERMANENT, Result::SUMMARY_INTERNAL,         Result::MODULE_NN_FRIENDS,
311         DESCRIPTION_FILE_IO_ERROR
312     );
313 
314     NN_DEFINE_RESULT_CONST(
315         ResultP2pInternetProhibited,
316         Result::LEVEL_PERMANENT, Result::SUMMARY_INVALID_STATE,    Result::MODULE_NN_FRIENDS,
317         DESCRIPTION_P2P_INTERNET_PROHIBITED
318     );
319 
320     NN_DEFINE_RESULT_CONST(
321         ResultUnknown,
322         Result::LEVEL_FATAL,     Result::SUMMARY_INTERNAL,         Result::MODULE_NN_FRIENDS,
323         DESCRIPTION_UNKNOWN
324     );
325 
326 
327     NN_DEFINE_RESULT_CONST(
328         ResultInvalidFriendCode,
329         Result::LEVEL_USAGE,     Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_FRIENDS,
330         DESCRIPTION_INVALID_FRIEND_CODE
331     );
332 
333     NN_DEFINE_RESULT_CONST(
334         ResultNotLoggedIn,
335         Result::LEVEL_PERMANENT, Result::SUMMARY_INVALID_STATE,    Result::MODULE_NN_FRIENDS,
336         DESCRIPTION_NOT_LOGGED_IN
337     );
338 
339     NN_DEFINE_RESULT_CONST(
340         ResultNotFriendsResult,
341         Result::LEVEL_USAGE,     Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_FRIENDS,
342         DESCRIPTION_NOT_FRIENDS_RESULT
343     );
344 
345     NN_DEFINE_RESULT_CONST(
346         ResultUndefinedFacilitySuccess,
347         Result::LEVEL_SUCCESS,   Result::SUMMARY_SUCCESS,          Result::MODULE_NN_FRIENDS,
348         DESCRIPTION_UNDEFINED_FACILITY
349     );
350 
351     NN_DEFINE_RESULT_CONST(
352         ResultUndefinedFacilityFailure,
353         Result::LEVEL_PERMANENT, Result::SUMMARY_INTERNAL,         Result::MODULE_NN_FRIENDS,
354         DESCRIPTION_UNDEFINED_FACILITY
355     );
356 
357 
358     NN_DEFINE_RESULT_CONST(
359         ResultNotInitialized,
360         Result::LEVEL_USAGE,     Result::SUMMARY_INVALID_STATE,    Result::MODULE_NN_FRIENDS,
361         Result::DESCRIPTION_NOT_INITIALIZED
362     );
363 
364     NN_DEFINE_RESULT_CONST(
365         ResultInvalidHandle,
366         Result::LEVEL_USAGE,     Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_FRIENDS,
367         Result::DESCRIPTION_INVALID_HANDLE
368     );
369 
370     NN_DEFINE_RESULT_CONST(
371         ResultInvalidPointer,
372         Result::LEVEL_USAGE,     Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_FRIENDS,
373         Result::DESCRIPTION_INVALID_POINTER
374     );
375 
376     NN_DEFINE_RESULT_CONST(
377         ResultTooLarge,
378         Result::LEVEL_USAGE,     Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_FRIENDS,
379         Result::DESCRIPTION_TOO_LARGE
380     );
381 
382 
383     NN_DEFINE_RESULT_CONST(
384         ResultAlreadyDone,
385         Result::LEVEL_INFO,      Result::SUMMARY_NOTHING_HAPPENED, Result::MODULE_NN_FRIENDS,
386         Result::DESCRIPTION_ALREADY_DONE
387     );
388 
389     NN_DEFINE_RESULT_CONST(
390         ResultTemporarilyBusy,
391         Result::LEVEL_TEMPORARY, Result::SUMMARY_INVALID_STATE,    Result::MODULE_NN_FRIENDS,
392         Result::DESCRIPTION_BUSY
393     );
394 
395 
396     NN_DEFINE_RESULT_CONST(
397         ResultUnexpectedState,
398         Result::LEVEL_RESET,     Result::SUMMARY_INVALID_STATE,    Result::MODULE_NN_FRIENDS,
399         Result::DESCRIPTION_NOT_IMPLEMENTED
400     );
401 
402 
403     namespace detail {
MakeResult(Result::Level level,Result::Summary summary,int description)404         inline Result MakeResult(Result::Level level, Result::Summary summary, int description)
405             { return Result(level, summary, Result::MODULE_NN_FRIENDS, description); }
406 
MakeInfoResult(Result::Summary summary,int description)407         inline Result MakeInfoResult(Result::Summary summary, int description)
408             { return Result(Result::LEVEL_INFO, summary, Result::MODULE_NN_FRIENDS, description); }
MakeFatalResult(Result::Summary summary,int description)409         inline Result MakeFatalResult(Result::Summary summary, int description)
410             { return Result(Result::LEVEL_FATAL, summary, Result::MODULE_NN_FRIENDS, description); }
MakeResetResult(Result::Summary summary,int description)411         inline Result MakeResetResult(Result::Summary summary, int description)
412             { return Result(Result::LEVEL_RESET, summary, Result::MODULE_NN_FRIENDS, description); }
MakeReInitResult(Result::Summary summary,int description)413         inline Result MakeReInitResult(Result::Summary summary, int description)
414             { return Result(Result::LEVEL_REINIT, summary, Result::MODULE_NN_FRIENDS, description); }
MakeUsageResult(Result::Summary summary,int description)415         inline Result MakeUsageResult(Result::Summary summary, int description)
416             { return Result(Result::LEVEL_USAGE, summary, Result::MODULE_NN_FRIENDS, description); }
MakePermanentResult(Result::Summary summary,int description)417         inline Result MakePermanentResult(Result::Summary summary, int description)
418             { return Result(Result::LEVEL_PERMANENT, summary, Result::MODULE_NN_FRIENDS, description); }
MakeTemporaryResult(Result::Summary summary,int description)419         inline Result MakeTemporaryResult(Result::Summary summary, int description)
420             { return Result(Result::LEVEL_TEMPORARY, summary, Result::MODULE_NN_FRIENDS, description); }
MakeStatusResult(Result::Summary summary,int description)421         inline Result MakeStatusResult(Result::Summary summary, int description)
422             { return Result(Result::LEVEL_STATUS, summary, Result::MODULE_NN_FRIENDS, description); }
423     }
424 
425 } // end of namespace CTR
426     using namespace CTR;
427 } // end of namespace friends
428 } // end of namespace nn
429 
430 #endif // __cplusplus
431 
432 #endif /* NN_FRIENDS_CTR_FRIENDS_RESULT_H_ */
433