Skip to content

Commit 93625b1

Browse files
Meir Shpilraien (Spielrein)lantiga
andauthored
Add api for rai error (#362)
* Avoid using arr in ModelRun API, align redisai.h ModelRun signature * added llapi to handle RAI_Error struct * review fixes Co-authored-by: Luca Antiga <luca.antiga@orobix.com>
1 parent f566fcd commit 93625b1

File tree

4 files changed

+80
-1
lines changed

4 files changed

+80
-1
lines changed

src/err.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,18 @@ char *RAI_Chomp(const char *src) {
2323
return str;
2424
}
2525

26+
const char* RAI_GetError(RAI_Error *err) {
27+
return err->detail;
28+
}
29+
30+
const char* RAI_GetErrorOneLine(RAI_Error *err) {
31+
return err->detail_oneline;
32+
}
33+
34+
RAI_ErrorCode RAI_GetErrorCode(RAI_Error *err) {
35+
return err->code;
36+
}
37+
2638
void RAI_SetError(RAI_Error *err, RAI_ErrorCode code, const char *detail) {
2739
if(!err){
2840
return;

src/err.h

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,33 @@ int RAI_InitError(RAI_Error **err);
5252
*/
5353
void RAI_SetError(RAI_Error *err, RAI_ErrorCode code, const char *detail);
5454

55+
/**
56+
* Return the error description
57+
*
58+
* @param err
59+
* @return error description
60+
* @param err
61+
*/
62+
const char* RAI_GetError(RAI_Error *err);
63+
64+
/**
65+
* Return the error description as one line
66+
*
67+
* @param err
68+
* @return error description as one line
69+
* @param err
70+
*/
71+
const char* RAI_GetErrorOneLine(RAI_Error *err);
72+
73+
/**
74+
* Return the error code
75+
*
76+
* @param err
77+
* @return error code
78+
* @param err
79+
*/
80+
RAI_ErrorCode RAI_GetErrorCode(RAI_Error *err);
81+
5582
/**
5683
* Resets an previously used/allocated RAI_Error
5784
*
@@ -66,4 +93,4 @@ void RAI_ClearError(RAI_Error *err);
6693
*/
6794
void RAI_FreeError(RAI_Error *err);
6895

69-
#endif
96+
#endif

src/redisai.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1188,6 +1188,13 @@ static int RedisAI_RegisterApi(RedisModuleCtx* ctx) {
11881188

11891189
REGISTER_API(GetLLAPIVersion, ctx);
11901190

1191+
REGISTER_API(InitError, ctx);
1192+
REGISTER_API(ClearError, ctx);
1193+
REGISTER_API(FreeError, ctx);
1194+
REGISTER_API(GetError, ctx);
1195+
REGISTER_API(GetErrorOneLine, ctx);
1196+
REGISTER_API(GetErrorCode, ctx);
1197+
11911198
REGISTER_API(TensorCreate, ctx);
11921199
REGISTER_API(TensorCreateByConcatenatingTensors, ctx);
11931200
REGISTER_API(TensorCreateBySlicingTensor, ctx);

src/redisai.h

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,38 @@ typedef struct RAI_Error RAI_Error;
3030
#define REDISAI_DEVICE_CPU 0
3131
#define REDISAI_DEVICE_GPU 1
3232

33+
#define RedisAI_ErrorCode int
34+
#define RedisAI_ErrorCode_OK 0
35+
#define RedisAI_ErrorCode_EMODELIMPORT 1
36+
#define RedisAI_ErrorCode_EMODELCONFIGURE 2
37+
#define RedisAI_ErrorCode_EMODELCREATE 3
38+
#define RedisAI_ErrorCode_EMODELRUN 4
39+
#define RedisAI_ErrorCode_EMODELSERIALIZE 5
40+
#define RedisAI_ErrorCode_EMODELFREE 6
41+
#define RedisAI_ErrorCode_ESCRIPTIMPORT 7
42+
#define RedisAI_ErrorCode_ESCRIPTCONFIGURE 8
43+
#define RedisAI_ErrorCode_ESCRIPTCREATE 9
44+
#define RedisAI_ErrorCode_ESCRIPTRUN 10
45+
#define RedisAI_ErrorCode_EUNSUPPORTEDBACKEND 11
46+
#define RedisAI_ErrorCode_EBACKENDNOTLOADED 12
47+
#define RedisAI_ErrorCode_ESCRIPTFREE 13
48+
#define RedisAI_ErrorCode_ETENSORSET 14
49+
#define RedisAI_ErrorCode_ETENSORGET 15
50+
#define RedisAI_ErrorCode_EDAGRUN 17
51+
3352
enum RedisAI_DataFmt {
3453
REDISAI_DATA_BLOB = 0,
3554
REDISAI_DATA_VALUES,
3655
REDISAI_DATA_NONE
3756
};
3857

58+
int MODULE_API_FUNC(RedisAI_InitError)(RAI_Error **err);
59+
void MODULE_API_FUNC(RedisAI_ClearError)(RAI_Error *err);
60+
void MODULE_API_FUNC(RedisAI_FreeError)(RAI_Error *err);
61+
const char* MODULE_API_FUNC(RedisAI_GetError)(RAI_Error *err);
62+
const char* MODULE_API_FUNC(RedisAI_GetErrorOneLine)(RAI_Error *err);
63+
RedisAI_ErrorCode MODULE_API_FUNC(RedisAI_GetErrorCode)(RAI_Error *err);
64+
3965
RAI_Tensor* MODULE_API_FUNC(RedisAI_TensorCreate)(const char* dataTypeStr, long long* dims, int ndims);
4066
RAI_Tensor* MODULE_API_FUNC(RedisAI_TensorCreateByConcatenatingTensors)(RAI_Tensor** ts, long long n);
4167
RAI_Tensor* MODULE_API_FUNC(RedisAI_TensorCreateBySlicingTensor)(RAI_Tensor* t, long long offset, long long len);
@@ -96,6 +122,13 @@ static int RedisAI_Initialize(RedisModuleCtx* ctx){
96122
return REDISMODULE_ERR;
97123
}
98124

125+
REDISAI_MODULE_INIT_FUNCTION(ctx, InitError);
126+
REDISAI_MODULE_INIT_FUNCTION(ctx, ClearError);
127+
REDISAI_MODULE_INIT_FUNCTION(ctx, FreeError);
128+
REDISAI_MODULE_INIT_FUNCTION(ctx, GetError);
129+
REDISAI_MODULE_INIT_FUNCTION(ctx, GetErrorOneLine);
130+
REDISAI_MODULE_INIT_FUNCTION(ctx, GetErrorCode);
131+
99132
REDISAI_MODULE_INIT_FUNCTION(ctx, GetLLAPIVersion);
100133

101134
REDISAI_MODULE_INIT_FUNCTION(ctx, TensorCreate);

0 commit comments

Comments
 (0)