From d9558316f1edd92fbec5c8b816760d93db4aa197 Mon Sep 17 00:00:00 2001 From: InHong Han Date: Thu, 30 Jun 2022 11:06:36 +0900 Subject: [PATCH] Reduce duplicate code in data_manager Change-Id: I91f33d3c2db2e72ff9f7061b1ab72d49f7ee4199 --- server/stickerd_data_manager.c | 118 ++++++++++------------------------------- 1 file changed, 27 insertions(+), 91 deletions(-) diff --git a/server/stickerd_data_manager.c b/server/stickerd_data_manager.c index ac976f2..79b65b5 100644 --- a/server/stickerd_data_manager.c +++ b/server/stickerd_data_manager.c @@ -1386,13 +1386,32 @@ static void _set_id_builder(char *id, GVariantBuilder *id_builder) g_variant_builder_add(id_builder, "(i)", atoi(id)); } +static int _set_reply_body(GList *list, GVariant **reply_body) +{ + int ret = STICKERD_SERVER_ERROR_NONE; + GVariantBuilder *builder = NULL; + + builder = g_variant_builder_new(G_VARIANT_TYPE("a(i)")); + g_list_foreach(list, (GFunc) _set_id_builder, builder); + + *reply_body = g_variant_new("(a(i))", builder); + if (*reply_body == NULL) { + LOGE("Failed to create reply_body"); + ret = STICKERD_SERVER_ERROR_OPERATION_FAILED; + } + + if (builder) + g_variant_builder_unref(builder); + + return ret; +} + int stickerd_get_all_sticker_info(GVariant *parameters, GVariant **reply_body) { int ret; int offset, count; char *app_id = NULL; GList *id_list = NULL; - GVariantBuilder *id_builder = NULL; g_variant_get(parameters, "(&sii)", &app_id, &offset, &count); @@ -1404,21 +1423,10 @@ int stickerd_get_all_sticker_info(GVariant *parameters, GVariant **reply_body) return STICKERD_SERVER_ERROR_OPERATION_FAILED; } - id_builder = g_variant_builder_new(G_VARIANT_TYPE("a(i)")); - g_list_foreach(id_list, (GFunc) _set_id_builder, id_builder); - - *reply_body = g_variant_new("(a(i))", id_builder); - if (*reply_body == NULL) { - LOGE("Failed to create reply_body"); - ret = STICKERD_SERVER_ERROR_OPERATION_FAILED; - } - + ret = _set_reply_body(id_list, reply_body); if (id_list) g_list_free_full(id_list, free); - if (id_builder) - g_variant_builder_unref(id_builder); - return ret; } @@ -1428,7 +1436,6 @@ int stickerd_get_sticker_info_by_app_id(GVariant *parameters, GVariant **reply_b GList *id_list = NULL; char *app_id = NULL; int offset, count; - GVariantBuilder *id_builder = NULL; g_variant_get(parameters, "(&sii)", &app_id, &offset, &count); @@ -1440,21 +1447,10 @@ int stickerd_get_sticker_info_by_app_id(GVariant *parameters, GVariant **reply_b return STICKERD_SERVER_ERROR_OPERATION_FAILED; } - id_builder = g_variant_builder_new(G_VARIANT_TYPE("a(i)")); - g_list_foreach(id_list, (GFunc) _set_id_builder, id_builder); - - *reply_body = g_variant_new("(a(i))", id_builder); - if (*reply_body == NULL) { - LOGE("Failed to create reply_body"); - ret = STICKERD_SERVER_ERROR_OPERATION_FAILED; - } - + ret = _set_reply_body(id_list, reply_body); if (id_list) g_list_free_full(id_list, free); - if (id_builder) - g_variant_builder_unref(id_builder); - return ret; } @@ -1464,7 +1460,6 @@ int stickerd_get_sticker_info_by_type(GVariant *parameters, GVariant **reply_bod GList *id_list = NULL; char *app_id = NULL; int type, offset, count; - GVariantBuilder *id_builder = NULL; g_variant_get(parameters, "(&siii)", &app_id, &type, &offset, &count); @@ -1476,21 +1471,10 @@ int stickerd_get_sticker_info_by_type(GVariant *parameters, GVariant **reply_bod return STICKERD_SERVER_ERROR_OPERATION_FAILED; } - id_builder = g_variant_builder_new(G_VARIANT_TYPE("a(i)")); - g_list_foreach(id_list, (GFunc) _set_id_builder, id_builder); - - *reply_body = g_variant_new("(a(i))", id_builder); - if (*reply_body == NULL) { - LOGE("Failed to create reply_body"); - ret = STICKERD_SERVER_ERROR_OPERATION_FAILED; - } - + ret = _set_reply_body(id_list, reply_body); if (id_list) g_list_free_full(id_list, free); - if (id_builder) - g_variant_builder_unref(id_builder); - return ret; } @@ -1501,7 +1485,6 @@ int stickerd_get_sticker_info_by_group(GVariant *parameters, GVariant **reply_bo char *app_id = NULL; char *group = NULL; int offset, count; - GVariantBuilder *id_builder = NULL; g_variant_get(parameters, "(&s&sii)", &app_id, &group, &offset, &count); @@ -1513,21 +1496,10 @@ int stickerd_get_sticker_info_by_group(GVariant *parameters, GVariant **reply_bo return STICKERD_SERVER_ERROR_OPERATION_FAILED; } - id_builder = g_variant_builder_new(G_VARIANT_TYPE("a(i)")); - g_list_foreach(id_list, (GFunc) _set_id_builder, id_builder); - - *reply_body = g_variant_new("(a(i))", id_builder); - if (*reply_body == NULL) { - LOGE("Failed to create reply_body"); - ret = STICKERD_SERVER_ERROR_OPERATION_FAILED; - } - + ret = _set_reply_body(id_list, reply_body); if (id_list) g_list_free_full(id_list, free); - if (id_builder) - g_variant_builder_unref(id_builder); - return ret; } @@ -1538,7 +1510,6 @@ int stickerd_get_sticker_info_by_keyword(GVariant *parameters, GVariant **reply_ char *app_id = NULL; char *keyword = NULL; int offset, count; - GVariantBuilder *id_builder = NULL; g_variant_get(parameters, "(&s&sii)", &app_id, &keyword, &offset, &count); @@ -1550,21 +1521,10 @@ int stickerd_get_sticker_info_by_keyword(GVariant *parameters, GVariant **reply_ return STICKERD_SERVER_ERROR_OPERATION_FAILED; } - id_builder = g_variant_builder_new(G_VARIANT_TYPE("a(i)")); - g_list_foreach(id_list, (GFunc) _set_id_builder, id_builder); - - *reply_body = g_variant_new("(a(i))", id_builder); - if (*reply_body == NULL) { - LOGE("Failed to create reply_body"); - ret = STICKERD_SERVER_ERROR_OPERATION_FAILED; - } - + ret = _set_reply_body(id_list, reply_body); if (id_list) g_list_free_full(id_list, free); - if (id_builder) - g_variant_builder_unref(id_builder); - return ret; } @@ -1574,7 +1534,6 @@ int stickerd_get_sticker_info_by_display_type(GVariant *parameters, GVariant **r GList *id_list = NULL; char *app_id = NULL; int type, offset, count; - GVariantBuilder *id_builder = NULL; g_variant_get(parameters, "(&siii)", &app_id, &type, &offset, &count); @@ -1586,21 +1545,10 @@ int stickerd_get_sticker_info_by_display_type(GVariant *parameters, GVariant **r return STICKERD_SERVER_ERROR_OPERATION_FAILED; } - id_builder = g_variant_builder_new(G_VARIANT_TYPE("a(i)")); - g_list_foreach(id_list, (GFunc) _set_id_builder, id_builder); - - *reply_body = g_variant_new("(a(i))", id_builder); - if (*reply_body == NULL) { - LOGE("Failed to create reply_body"); - ret = STICKERD_SERVER_ERROR_OPERATION_FAILED; - } - + ret = _set_reply_body(id_list, reply_body); if (id_list) g_list_free_full(id_list, free); - if (id_builder) - g_variant_builder_unref(id_builder); - return ret; } @@ -1705,7 +1653,6 @@ int stickerd_get_recent_sticker_info(GVariant *parameters, GVariant **reply_body int ret; int count; GList *id_list = NULL; - GVariantBuilder *id_builder = NULL; g_variant_get(parameters, "(i)", &count); @@ -1717,21 +1664,10 @@ int stickerd_get_recent_sticker_info(GVariant *parameters, GVariant **reply_body return STICKERD_SERVER_ERROR_OPERATION_FAILED; } - id_builder = g_variant_builder_new(G_VARIANT_TYPE("a(i)")); - g_list_foreach(id_list, (GFunc) _set_id_builder, id_builder); - - *reply_body = g_variant_new("(a(i))", id_builder); - if (*reply_body == NULL) { - LOGE("Failed to create reply_body"); - ret = STICKERD_SERVER_ERROR_OPERATION_FAILED; - } - + ret = _set_reply_body(id_list, reply_body); if (id_list) g_list_free_full(id_list, free); - if (id_builder) - g_variant_builder_unref(id_builder); - return ret; } -- 2.7.4