Skip to content

Commit 7261465

Browse files
committed
feat: introduce centralized typed error model and integrate with logger (#423)
1 parent 1556b59 commit 7261465

4 files changed

Lines changed: 86 additions & 1 deletion

File tree

sdk/runanywhere-commons/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,7 @@ set(RAC_CORE_SOURCES
197197
src/core/sdk_state.cpp
198198
src/core/rac_structured_error.cpp
199199
src/core/capabilities/lifecycle_manager.cpp
200+
src/core/rac_error_model.cpp
200201
)
201202

202203
# 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: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
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 >= -499 && code <= -400) return "ModuleService";
25+
if (code >= -599 && code <= -500) return "PlatformAdapter";
26+
if (code >= -699 && code <= -600) return "Backend";
27+
if (code >= -799 && code <= -700) return "Event";
28+
if (code >= -899 && code <= -800) return "Other";
29+
30+
if (code == RAC_SUCCESS) return "Success";
31+
32+
return "Unknown";
33+
}
34+
35+
// ------------------------------------------------------------
36+
// Public API: Create Structured Error Model
37+
// ------------------------------------------------------------
38+
rac_error_model_t rac_make_error_model(rac_result_t code) {
39+
rac_error_model_t model;
40+
model.code = code;
41+
model.message = rac_error_message(code);
42+
model.category = rac_error_category(code);
43+
return model;
44+
}

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

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

16+
#include "rac/core/rac_error_model.h"
1617
#include "rac/core/rac_platform_adapter.h"
1718

1819
// =============================================================================
@@ -154,7 +155,10 @@ void log_to_stderr(rac_log_level_t level, const char* category, const char* mess
154155
fprintf(stream, ", func=%s", metadata->function);
155156
}
156157
if (metadata->error_code != 0) {
157-
fprintf(stream, ", error_code=%d", metadata->error_code);
158+
rac_error_model_t err = rac_make_error_model((rac_result_t)metadata->error_code);
159+
fprintf(stream, ", error_code=%d", err.code);
160+
fprintf(stream, ", error_category=%s", err.category);
161+
fprintf(stream, ", error_message=%s", err.message);
158162
}
159163
if (metadata->model_id) {
160164
fprintf(stream, ", model=%s", metadata->model_id);

0 commit comments

Comments
 (0)