diff options
Diffstat (limited to 'email-ipc/email-ipc-api/email-ipc-api-info.c')
-rwxr-xr-x | email-ipc/email-ipc-api/email-ipc-api-info.c | 140 |
1 files changed, 56 insertions, 84 deletions
diff --git a/email-ipc/email-ipc-api/email-ipc-api-info.c b/email-ipc/email-ipc-api/email-ipc-api-info.c index c4e2cba..23dc135 100755 --- a/email-ipc/email-ipc-api/email-ipc-api-info.c +++ b/email-ipc/email-ipc-api/email-ipc-api-info.c @@ -30,126 +30,98 @@ #include "email-debug-log.h" -static long emipc_parse_api_id_of_api_info(emipc_email_api_info *api_info, void *stream); -static long emipc_parse_response_id_of_api_info(emipc_email_api_info *api_info, void* stream); -static long emipc_parse_app_id_of_api_info(emipc_email_api_info *api_info, void* stream); -EXPORT_API bool emipc_set_api_id_of_api_info(emipc_email_api_info *api_info, long api_id) +/* deserializing data from stream */ +EXPORT_API bool emipc_deserialize_api_info(emipc_email_api_info *api_info, EPARAMETER_DIRECTION direction, void *stream) { - api_info->api_id = api_id; - return true; -} - -EXPORT_API long emipc_get_api_id_of_api_info(emipc_email_api_info *api_info) -{ - return api_info->api_id; -} - -EXPORT_API bool emipc_set_app_id_of_api_info(emipc_email_api_info *api_info, long app_id) -{ - api_info->app_id = app_id; - return true; -} - -EXPORT_API long emipc_get_app_id_of_api_info(emipc_email_api_info *api_info) -{ - return api_info->app_id; -} - -EXPORT_API bool emipc_set_response_id_of_api_info(emipc_email_api_info *api_info, long response_id) -{ - api_info->response_id = response_id; - return true; -} - -EXPORT_API long emipc_get_response_id_of_api_info(emipc_email_api_info *api_info) -{ - return api_info->response_id; -} - -EXPORT_API bool emipc_parse_stream_of_api_info(emipc_email_api_info *api_info, EPARAMETER_DIRECTION direction, void *stream) -{ - emipc_param_list *new_param_list = NULL; + EM_DEBUG_FUNC_BEGIN("emipc_email_api_info : [%p], direction : [%d]", api_info, direction); + + if (!api_info || !stream) { + EM_DEBUG_EXCEPTION("Invalid parameter."); + return false; + } if (api_info->params[direction] == NULL) { - new_param_list = (emipc_param_list *)malloc(sizeof(emipc_param_list)); - if (new_param_list == NULL) { - EM_DEBUG_EXCEPTION("Memory allocation failed."); + api_info->params[direction] = emipc_create_param_list(); + if (api_info->params[direction] == NULL) { + EM_DEBUG_EXCEPTION("Malloc failed"); return false; } - memset(new_param_list, 0x00, sizeof(emipc_param_list)); - api_info->params[direction] = new_param_list; } - emipc_parse_api_id_of_api_info(api_info, stream); - emipc_parse_app_id_of_api_info(api_info, stream); - emipc_parse_response_id_of_api_info(api_info, stream); + api_info->api_id = *((long *)stream + eSTREAM_APIID); + api_info->app_id = *((long*)stream + eSTREAM_APPID); + api_info->response_id = *((long*)stream + eSTREAM_RESID); + return emipc_parse_stream_of_param_list(api_info->params[direction], stream); } -EXPORT_API unsigned char *emipc_get_stream_of_api_info(emipc_email_api_info *api_info, EPARAMETER_DIRECTION direction) +EXPORT_API unsigned char *emipc_serialize_api_info(emipc_email_api_info *api_info, EPARAMETER_DIRECTION direction, int *stream_len) { - emipc_param_list *new_param_list = NULL; + EM_DEBUG_FUNC_BEGIN(); unsigned char *stream = NULL; + + if (!api_info) { + EM_DEBUG_EXCEPTION("Invalid parameter."); + return stream; + } if (api_info->params[direction] == NULL) { - new_param_list = (emipc_param_list *)malloc(sizeof(emipc_param_list)); - if (new_param_list == NULL) { - EM_DEBUG_EXCEPTION("Memory allocation failed."); - return false; + api_info->params[direction] = emipc_create_param_list(); + if (api_info->params[direction] == NULL) { + EM_DEBUG_EXCEPTION("Malloc failed"); + return NULL; } - memset(new_param_list, 0x00, sizeof(emipc_param_list)); - api_info->params[direction] = new_param_list; } - stream = emipc_get_stream_of_param_list(api_info->params[direction]); + stream = emipc_serialize_param_list(api_info->params[direction], stream_len); if (stream != NULL) { memcpy(stream, &(api_info->api_id), sizeof(api_info->api_id)); memcpy(stream+(sizeof(long)*eSTREAM_RESID), &(api_info->response_id), sizeof(api_info->response_id)); memcpy(stream+(sizeof(long)*eSTREAM_APPID), &(api_info->app_id), sizeof(api_info->app_id)); } + EM_DEBUG_FUNC_END(); return stream; } -EXPORT_API int emipc_get_stream_length_of_api_info(emipc_email_api_info *api_info, EPARAMETER_DIRECTION direction) -{ - if (api_info->params[direction] == NULL) - return 0; - - return emipc_get_stream_length_of_param_list(api_info->params[direction]); -} - EXPORT_API void *emipc_get_parameters_of_api_info(emipc_email_api_info *api_info, EPARAMETER_DIRECTION direction) { - emipc_param_list *new_param_list = NULL; - + EM_DEBUG_FUNC_BEGIN("emipc_email_api_info : [%p], direction : [%d]", api_info, direction); + + if (!api_info) { + EM_DEBUG_EXCEPTION("INVALID_PARAM"); + return NULL; + } + if (api_info->params[direction] == NULL) { - new_param_list = (emipc_param_list *)malloc(sizeof(emipc_param_list)); - if (new_param_list == NULL) { - EM_DEBUG_EXCEPTION("Memory allocation failed."); - return false; + api_info->params[direction] = emipc_create_param_list(); + if (api_info->params[direction] == NULL) { + EM_DEBUG_EXCEPTION("emipc_create_param_list failed"); + return NULL; } - memset(new_param_list, 0x00, sizeof(emipc_param_list)); - api_info->params[direction] = new_param_list; } + return api_info->params[direction]; } -static long emipc_parse_api_id_of_api_info(emipc_email_api_info *api_info, void *stream) +EXPORT_API bool emipc_free_api_info(emipc_email_api_info *api_info) { - api_info->api_id = *((long *)stream + eSTREAM_APIID); - return api_info->api_id; -} + if (!api_info) { + EM_DEBUG_EXCEPTION("Invalid parameter"); + return false; + } -static long emipc_parse_response_id_of_api_info(emipc_email_api_info *api_info, void* stream) -{ - api_info->response_id = *((long*)stream + eSTREAM_RESID); - return api_info->response_id; -} + if (!emipc_destroy_param_list(api_info->params[ePARAMETER_IN])) { + EM_DEBUG_EXCEPTION("emipc_destroy_param_list failed : ePARAMETER[%d]", ePARAMETER_IN); + return false; + } -static long emipc_parse_app_id_of_api_info(emipc_email_api_info *api_info, void* stream) -{ - api_info->app_id = *((long*)stream + eSTREAM_APPID); - return api_info->app_id; + if (!emipc_destroy_param_list(api_info->params[ePARAMETER_OUT])) { + EM_DEBUG_EXCEPTION("emipc_destroy_param_list failed : ePARAMETER[%d]", ePARAMETER_OUT); + return false; + } + return true; } + + |