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  _az_FACILITY_ULIB = 0x7,
32 };
33 
34 enum
35 {
36  _az_ERROR_FLAG = (int32_t)0x80000000,
37 };
38 
46 typedef int32_t az_result;
47 
48 // az_result Bits:
49 // - 31 Severity (0 - success, 1 - failure).
50 // - 16..30 Facility.
51 // - 0..15 Code.
52 
53 #define _az_RESULT_MAKE_ERROR(facility, code) \
54  ((az_result)((uint32_t)_az_ERROR_FLAG | ((uint32_t)(facility) << 16U) | (uint32_t)(code)))
55 
56 #define _az_RESULT_MAKE_SUCCESS(facility, code) \
57  ((az_result)(((uint32_t)(facility) << 16U) | (uint32_t)(code)))
58 
64 {
65  // === Core: Success results ====
67  AZ_OK = _az_RESULT_MAKE_SUCCESS(_az_FACILITY_CORE, 0),
68 
69  // === Core: Error results ===
71  AZ_ERROR_CANCELED = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE, 0),
72 
74  AZ_ERROR_ARG = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE, 1),
75 
77  AZ_ERROR_NOT_ENOUGH_SPACE = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE, 2),
78 
80  AZ_ERROR_NOT_IMPLEMENTED = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE, 3),
81 
83  AZ_ERROR_ITEM_NOT_FOUND = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE, 4),
84 
86  AZ_ERROR_UNEXPECTED_CHAR = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE, 5),
87 
89  AZ_ERROR_UNEXPECTED_END = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE, 6),
90 
92  AZ_ERROR_NOT_SUPPORTED = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE, 7),
93 
96  AZ_ERROR_DEPENDENCY_NOT_PROVIDED = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE, 8),
97 
98  // === Platform ===
100  AZ_ERROR_OUT_OF_MEMORY = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE_PLATFORM, 1),
101 
102  // === JSON error codes ===
104  AZ_ERROR_JSON_INVALID_STATE = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE_JSON, 1),
105 
107  AZ_ERROR_JSON_NESTING_OVERFLOW = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE_JSON, 2),
108 
110  AZ_ERROR_JSON_READER_DONE = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE_JSON, 3),
111 
112  // === HTTP error codes ===
114  AZ_ERROR_HTTP_INVALID_STATE = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE_HTTP, 1),
115 
117  AZ_ERROR_HTTP_PIPELINE_INVALID_POLICY = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE_HTTP, 2),
118 
120  AZ_ERROR_HTTP_INVALID_METHOD_VERB = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE_HTTP, 3),
121 
123  AZ_ERROR_HTTP_AUTHENTICATION_FAILED = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE_HTTP, 4),
124 
126  AZ_ERROR_HTTP_RESPONSE_OVERFLOW = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE_HTTP, 5),
127 
129  AZ_ERROR_HTTP_RESPONSE_COULDNT_RESOLVE_HOST = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE_HTTP, 6),
130 
132  AZ_ERROR_HTTP_CORRUPT_RESPONSE_HEADER = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE_HTTP, 7),
133 
135  AZ_ERROR_HTTP_END_OF_HEADERS = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE_HTTP, 8),
136 
137  // === HTTP Adapter error codes ===
139  AZ_ERROR_HTTP_ADAPTER = _az_RESULT_MAKE_ERROR(_az_FACILITY_CORE_HTTP, 9),
140 };
141 
149 AZ_NODISCARD AZ_INLINE bool az_result_failed(az_result result)
150 {
151  return ((uint32_t)result & (uint32_t)_az_ERROR_FLAG) != 0;
152 }
153 
162 AZ_NODISCARD AZ_INLINE bool az_result_succeeded(az_result result)
163 {
164  return !az_result_failed(result);
165 }
166 
167 #include <azure/core/_az_cfg_suffix.h>
168 
169 #endif // _az_RESULT_H
AZ_ERROR_HTTP_RESPONSE_OVERFLOW
@ AZ_ERROR_HTTP_RESPONSE_OVERFLOW
HTTP response overflow.
Definition: az_result.h:126
AZ_ERROR_HTTP_CORRUPT_RESPONSE_HEADER
@ AZ_ERROR_HTTP_CORRUPT_RESPONSE_HEADER
Error while parsing HTTP response header.
Definition: az_result.h:132
AZ_ERROR_HTTP_ADAPTER
@ AZ_ERROR_HTTP_ADAPTER
Generic error in the HTTP transport adapter implementation.
Definition: az_result.h:139
AZ_ERROR_HTTP_PIPELINE_INVALID_POLICY
@ AZ_ERROR_HTTP_PIPELINE_INVALID_POLICY
HTTP pipeline is malformed.
Definition: az_result.h:117
AZ_ERROR_ITEM_NOT_FOUND
@ AZ_ERROR_ITEM_NOT_FOUND
Requested item was not found.
Definition: az_result.h:83
AZ_ERROR_UNEXPECTED_CHAR
@ AZ_ERROR_UNEXPECTED_CHAR
Input can't be successfully parsed.
Definition: az_result.h:86
AZ_ERROR_ARG
@ AZ_ERROR_ARG
Input argument does not comply with the expected range of values.
Definition: az_result.h:74
az_result
int32_t az_result
The type represents the various success and error conditions.
Definition: az_result.h:46
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:64
AZ_ERROR_JSON_READER_DONE
@ AZ_ERROR_JSON_READER_DONE
No more JSON text left to process.
Definition: az_result.h:110
AZ_ERROR_NOT_ENOUGH_SPACE
@ AZ_ERROR_NOT_ENOUGH_SPACE
The destination size is too small for the operation.
Definition: az_result.h:77
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:162
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:149
AZ_ERROR_HTTP_AUTHENTICATION_FAILED
@ AZ_ERROR_HTTP_AUTHENTICATION_FAILED
Authentication failed.
Definition: az_result.h:123
AZ_ERROR_NOT_IMPLEMENTED
@ AZ_ERROR_NOT_IMPLEMENTED
Requested functionality is not implemented.
Definition: az_result.h:80
AZ_ERROR_DEPENDENCY_NOT_PROVIDED
@ AZ_ERROR_DEPENDENCY_NOT_PROVIDED
Definition: az_result.h:96
AZ_ERROR_CANCELED
@ AZ_ERROR_CANCELED
A context was canceled, and a function had to return before result was ready.
Definition: az_result.h:71
AZ_ERROR_JSON_NESTING_OVERFLOW
@ AZ_ERROR_JSON_NESTING_OVERFLOW
The JSON depth is too large.
Definition: az_result.h:107
AZ_ERROR_HTTP_INVALID_METHOD_VERB
@ AZ_ERROR_HTTP_INVALID_METHOD_VERB
Unknown HTTP method verb.
Definition: az_result.h:120
AZ_OK
@ AZ_OK
Success.
Definition: az_result.h:67
AZ_ERROR_OUT_OF_MEMORY
@ AZ_ERROR_OUT_OF_MEMORY
Dynamic memory allocation request was not successful.
Definition: az_result.h:100
AZ_ERROR_HTTP_INVALID_STATE
@ AZ_ERROR_HTTP_INVALID_STATE
The az_http_response instance is in an invalid state.
Definition: az_result.h:114
AZ_ERROR_UNEXPECTED_END
@ AZ_ERROR_UNEXPECTED_END
Unexpected end of the input data.
Definition: az_result.h:89
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:135
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:104
AZ_ERROR_HTTP_RESPONSE_COULDNT_RESOLVE_HOST
@ AZ_ERROR_HTTP_RESPONSE_COULDNT_RESOLVE_HOST
Couldn't resolve host.
Definition: az_result.h:129
AZ_ERROR_NOT_SUPPORTED
@ AZ_ERROR_NOT_SUPPORTED
Not supported.
Definition: az_result.h:92