Azure SDK for Embedded C
az_result.h
Go to the documentation of this file.
1 // Copyright (c) Microsoft Corporation. All rights reserved.
2 // SPDX-License-Identifier: MIT
3 
15 #ifndef _az_RESULT_H
16 #define _az_RESULT_H
17 
18 #include <stdbool.h>
19 #include <stdint.h>
20 
21 #include <azure/core/_az_cfg_prefix.h>
22 
23 enum
24 {
25  _az_FACILITY_CORE = 0x1,
26  _az_FACILITY_CORE_PLATFORM = 0x2,
27  _az_FACILITY_CORE_JSON = 0x3,
28  _az_FACILITY_CORE_HTTP = 0x4,
29  _az_FACILITY_IOT = 0x5,
30  _az_FACILITY_IOT_MQTT = 0x6,
31 };
32 
33 enum
34 {
35  _az_ERROR_FLAG = (int32_t)0x80000000,
36 };
37 
45 typedef int32_t az_result;
46 
47 // az_result Bits:
48 // - 31 Severity (0 - success, 1 - failure).
49 // - 16..30 Facility.
50 // - 0..15 Code.
51 
52 #define _az_RESULT_MAKE_ERROR(facility, code) \
53  ((az_result)((uint32_t)_az_ERROR_FLAG | ((uint32_t)(facility) << 16U) | (uint32_t)(code)))
54 
55 #define _az_RESULT_MAKE_SUCCESS(facility, code) \
56  ((az_result)(((uint32_t)(facility) << 16U) | (uint32_t)(code)))
57 
63 {
64  // === Core: Success results ====
66  AZ_OK = _az_RESULT_MAKE_SUCCESS(_az_FACILITY_CORE, 0),
67 
68  // === Core: Error results ===
70  AZ_ERROR_CANCELED = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE, 0),
71 
73  AZ_ERROR_ARG = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE, 1),
74 
76  AZ_ERROR_NOT_ENOUGH_SPACE = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE, 2),
77 
79  AZ_ERROR_NOT_IMPLEMENTED = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE, 3),
80 
82  AZ_ERROR_ITEM_NOT_FOUND = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE, 4),
83 
85  AZ_ERROR_UNEXPECTED_CHAR = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE, 5),
86 
88  AZ_ERROR_UNEXPECTED_END = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE, 6),
89 
91  AZ_ERROR_NOT_SUPPORTED = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE, 7),
92 
95  AZ_ERROR_DEPENDENCY_NOT_PROVIDED = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE, 8),
96 
97  // === Platform ===
99  AZ_ERROR_OUT_OF_MEMORY = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE_PLATFORM, 1),
100 
101  // === JSON error codes ===
103  AZ_ERROR_JSON_INVALID_STATE = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE_JSON, 1),
104 
106  AZ_ERROR_JSON_NESTING_OVERFLOW = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE_JSON, 2),
107 
109  AZ_ERROR_JSON_READER_DONE = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE_JSON, 3),
110 
111  // === HTTP error codes ===
113  AZ_ERROR_HTTP_INVALID_STATE = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE_HTTP, 1),
114 
116  AZ_ERROR_HTTP_PIPELINE_INVALID_POLICY = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE_HTTP, 2),
117 
119  AZ_ERROR_HTTP_INVALID_METHOD_VERB = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE_HTTP, 3),
120 
122  AZ_ERROR_HTTP_AUTHENTICATION_FAILED = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE_HTTP, 4),
123 
125  AZ_ERROR_HTTP_RESPONSE_OVERFLOW = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE_HTTP, 5),
126 
128  AZ_ERROR_HTTP_RESPONSE_COULDNT_RESOLVE_HOST = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE_HTTP, 6),
129 
131  AZ_ERROR_HTTP_CORRUPT_RESPONSE_HEADER = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE_HTTP, 7),
132 
134  AZ_ERROR_HTTP_END_OF_HEADERS = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE_HTTP, 8),
135 
136  // === HTTP Adapter error codes ===
138  AZ_ERROR_HTTP_ADAPTER = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE_HTTP, 9),
139 };
140 
148 AZ_NODISCARD AZ_INLINE bool az_result_failed(az_result result)
149 {
150  return ((uint32_t)result & (uint32_t)_az_ERROR_FLAG) != 0;
151 }
152 
161 AZ_NODISCARD AZ_INLINE bool az_result_succeeded(az_result result)
162 {
163  return !az_result_failed(result);
164 }
165 
166 #include <azure/core/_az_cfg_suffix.h>
167 
168 #endif // _az_RESULT_H
AZ_ERROR_HTTP_RESPONSE_OVERFLOW
@ AZ_ERROR_HTTP_RESPONSE_OVERFLOW
HTTP response overflow.
Definition: az_result.h:125
AZ_ERROR_HTTP_CORRUPT_RESPONSE_HEADER
@ AZ_ERROR_HTTP_CORRUPT_RESPONSE_HEADER
Error while parsing HTTP response header.
Definition: az_result.h:131
AZ_ERROR_HTTP_ADAPTER
@ AZ_ERROR_HTTP_ADAPTER
Generic error in the HTTP transport adapter implementation.
Definition: az_result.h:138
AZ_ERROR_HTTP_PIPELINE_INVALID_POLICY
@ AZ_ERROR_HTTP_PIPELINE_INVALID_POLICY
HTTP pipeline is malformed.
Definition: az_result.h:116
AZ_ERROR_ITEM_NOT_FOUND
@ AZ_ERROR_ITEM_NOT_FOUND
Requested item was not found.
Definition: az_result.h:82
AZ_ERROR_UNEXPECTED_CHAR
@ AZ_ERROR_UNEXPECTED_CHAR
Input can't be successfully parsed.
Definition: az_result.h:85
AZ_ERROR_ARG
@ AZ_ERROR_ARG
Input argument does not comply with the expected range of values.
Definition: az_result.h:73
az_result
int32_t az_result
The type represents the various success and error conditions.
Definition: az_result.h:45
az_result_core
az_result_core
The type represents the various az_result success and error conditions specific to SDK Core.
Definition: az_result.h:63
AZ_ERROR_JSON_READER_DONE
@ AZ_ERROR_JSON_READER_DONE
No more JSON text left to process.
Definition: az_result.h:109
AZ_ERROR_NOT_ENOUGH_SPACE
@ AZ_ERROR_NOT_ENOUGH_SPACE
The destination size is too small for the operation.
Definition: az_result.h:76
az_result_succeeded
AZ_NODISCARD AZ_INLINE bool az_result_succeeded(az_result result)
Checks whether the result provided indicates a success.
Definition: az_result.h:161
az_result_failed
AZ_NODISCARD AZ_INLINE bool az_result_failed(az_result result)
Checks whether the result provided indicates a failure.
Definition: az_result.h:148
AZ_ERROR_HTTP_AUTHENTICATION_FAILED
@ AZ_ERROR_HTTP_AUTHENTICATION_FAILED
Authentication failed.
Definition: az_result.h:122
AZ_ERROR_NOT_IMPLEMENTED
@ AZ_ERROR_NOT_IMPLEMENTED
Requested functionality is not implemented.
Definition: az_result.h:79
AZ_ERROR_DEPENDENCY_NOT_PROVIDED
@ AZ_ERROR_DEPENDENCY_NOT_PROVIDED
Definition: az_result.h:95
AZ_ERROR_CANCELED
@ AZ_ERROR_CANCELED
A context was canceled, and a function had to return before result was ready.
Definition: az_result.h:70
AZ_ERROR_JSON_NESTING_OVERFLOW
@ AZ_ERROR_JSON_NESTING_OVERFLOW
The JSON depth is too large.
Definition: az_result.h:106
AZ_ERROR_HTTP_INVALID_METHOD_VERB
@ AZ_ERROR_HTTP_INVALID_METHOD_VERB
Unknown HTTP method verb.
Definition: az_result.h:119
AZ_OK
@ AZ_OK
Success.
Definition: az_result.h:66
AZ_ERROR_OUT_OF_MEMORY
@ AZ_ERROR_OUT_OF_MEMORY
Dynamic memory allocation request was not successful.
Definition: az_result.h:99
AZ_ERROR_HTTP_INVALID_STATE
@ AZ_ERROR_HTTP_INVALID_STATE
The az_http_response instance is in an invalid state.
Definition: az_result.h:113
AZ_ERROR_UNEXPECTED_END
@ AZ_ERROR_UNEXPECTED_END
Unexpected end of the input data.
Definition: az_result.h:88
AZ_ERROR_HTTP_END_OF_HEADERS
@ AZ_ERROR_HTTP_END_OF_HEADERS
There are no more headers within the HTTP response payload.
Definition: az_result.h:134
AZ_ERROR_JSON_INVALID_STATE
@ AZ_ERROR_JSON_INVALID_STATE
The kind of the token being read is not compatible with the expected type of the value.
Definition: az_result.h:103
AZ_ERROR_HTTP_RESPONSE_COULDNT_RESOLVE_HOST
@ AZ_ERROR_HTTP_RESPONSE_COULDNT_RESOLVE_HOST
Couldn't resolve host.
Definition: az_result.h:128
AZ_ERROR_NOT_SUPPORTED
@ AZ_ERROR_NOT_SUPPORTED
Not supported.
Definition: az_result.h:91