Skip to content

Commit 49279b7

Browse files
Introduce Centralized Typed Error Model Across SDKs (#436)
* feat: introduce centralized typed error model and integrate with logger (#423) * Added missing Error Codes --------- Co-authored-by: Siddhesh2377 <siddheshsonar2377@gmail.com>
2 parents b81095e + 4170e15 commit 49279b7

4 files changed

Lines changed: 87 additions & 1 deletion

File tree

sdk/runanywhere-commons/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,7 @@ set(RAC_CORE_SOURCES
283283
src/core/sdk_state.cpp
284284
src/core/rac_structured_error.cpp
285285
src/core/capabilities/lifecycle_manager.cpp
286+
src/core/rac_error_model.cpp
286287
)
287288

288289
# Infrastructure sources - registry, model management, network, telemetry
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
#ifndef RAC_ERROR_MODEL_H
2+
#define RAC_ERROR_MODEL_H
3+
4+
#include "rac/core/rac_error.h"
5+
6+
#ifdef __cplusplus
7+
extern "C" {
8+
#endif
9+
10+
/**
11+
* @brief Structured error model for RunAnywhere SDKs
12+
*
13+
* This wraps existing rac_result_t codes into a typed,
14+
* structured error representation for cross-SDK consistency.
15+
*/
16+
typedef struct {
17+
rac_result_t code; /**< Numeric error code */
18+
const char* message; /**< Human-readable error message */
19+
const char* category; /**< Error category (e.g., Model, Network, Validation) */
20+
} rac_error_model_t;
21+
22+
/**
23+
* @brief Create structured error model from error code
24+
*/
25+
rac_error_model_t rac_make_error_model(rac_result_t code);
26+
27+
/**
28+
* @brief Get error category string from error code
29+
*/
30+
const char* rac_error_category(rac_result_t code);
31+
32+
#ifdef __cplusplus
33+
}
34+
#endif
35+
36+
#endif // RAC_ERROR_MODEL_H
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#include "rac/core/rac_error_model.h"
2+
#include "rac/core/rac_error.h"
3+
4+
#include <string.h>
5+
6+
// ------------------------------------------------------------
7+
// Internal Helper: Determine Category from Error Code Range
8+
// ------------------------------------------------------------
9+
const char* rac_error_category(rac_result_t code) {
10+
if (code >= -109 && code <= -100) return "Initialization";
11+
if (code >= -129 && code <= -110) return "Model";
12+
if (code >= -149 && code <= -130) return "Generation";
13+
if (code >= -179 && code <= -150) return "Network";
14+
if (code >= -219 && code <= -180) return "Storage";
15+
if (code >= -229 && code <= -220) return "Hardware";
16+
if (code >= -249 && code <= -230) return "ComponentState";
17+
if (code >= -279 && code <= -250) return "Validation";
18+
if (code >= -299 && code <= -280) return "Audio";
19+
if (code >= -319 && code <= -300) return "LanguageVoice";
20+
if (code >= -329 && code <= -320) return "Authentication";
21+
if (code >= -349 && code <= -330) return "Security";
22+
if (code >= -369 && code <= -350) return "Extraction";
23+
if (code >= -379 && code <= -370) return "Calibration";
24+
if (code >= -389 && code <= -380) return "Cancellation";
25+
if (code >= -499 && code <= -400) return "ModuleService";
26+
if (code >= -599 && code <= -500) return "PlatformAdapter";
27+
if (code >= -699 && code <= -600) return "Backend";
28+
if (code >= -799 && code <= -700) return "Event";
29+
if (code >= -899 && code <= -800) return "Other";
30+
31+
if (code == RAC_SUCCESS) return "Success";
32+
33+
return "Unknown";
34+
}
35+
36+
// ------------------------------------------------------------
37+
// Public API: Create Structured Error Model
38+
// ------------------------------------------------------------
39+
rac_error_model_t rac_make_error_model(rac_result_t code) {
40+
rac_error_model_t model;
41+
model.code = code;
42+
model.message = rac_error_message(code);
43+
model.category = rac_error_category(code);
44+
return model;
45+
}

sdk/runanywhere-commons/src/core/rac_logger.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
#include <cstring>
1515
#include <mutex>
1616

17+
#include "rac/core/rac_error_model.h"
1718
#include "rac/core/rac_platform_adapter.h"
1819

1920
// =============================================================================
@@ -164,7 +165,10 @@ void log_to_stderr(rac_log_level_t level, const char* category, const char* mess
164165
fprintf(stream, ", func=%s", metadata->function);
165166
}
166167
if (metadata->error_code != 0) {
167-
fprintf(stream, ", error_code=%d", metadata->error_code);
168+
rac_error_model_t err = rac_make_error_model((rac_result_t)metadata->error_code);
169+
fprintf(stream, ", error_code=%d", err.code);
170+
fprintf(stream, ", error_category=%s", err.category);
171+
fprintf(stream, ", error_message=%s", err.message);
168172
}
169173
if (metadata->model_id) {
170174
fprintf(stream, ", model=%s", metadata->model_id);

0 commit comments

Comments
 (0)