[PATCH 5/6] base-sim: port load_* to use GTask
Aleksander Morgado
aleksander at aleksander.es
Wed Jul 5 08:51:54 UTC 2017
On 04/07/17 20:40, Ben Chan wrote:
> This patch ports the following functions to use GTask:
> - load_imsi
> - load_operator_identifier
> - load_operator_name
> - load_sim_identifier
> ---
> src/mm-base-sim.c | 75 ++++++++++++++++++++++++-------------------------------
> 1 file changed, 33 insertions(+), 42 deletions(-)
>
Pushed to git master, thanks.
> diff --git a/src/mm-base-sim.c b/src/mm-base-sim.c
> index 500b8294..ebfbc35a 100644
> --- a/src/mm-base-sim.c
> +++ b/src/mm-base-sim.c
> @@ -907,21 +907,18 @@ mm_base_sim_get_path (MMBaseSim *self)
> static void \
> NAME##_command_ready (MMBaseModem *modem, \
> GAsyncResult *res, \
> - GSimpleAsyncResult *operation_result) \
> + GTask *task) \
> { \
> GError *error = NULL; \
> const gchar *response; \
> \
> response = mm_base_modem_at_command_finish (modem, res, &error); \
> if (error) \
> - g_simple_async_result_take_error (operation_result, error); \
> + g_task_return_error (task, error); \
> else \
> - g_simple_async_result_set_op_res_gpointer (operation_result, \
> - (gpointer)response, \
> - NULL); \
> + g_task_return_pointer (task, g_strdup (response), g_free); \
> \
> - g_simple_async_result_complete (operation_result); \
> - g_object_unref (operation_result); \
> + g_object_unref (task); \
> }
>
> /*****************************************************************************/
> @@ -966,14 +963,15 @@ load_sim_identifier_finish (MMBaseSim *self,
> GAsyncResult *res,
> GError **error)
> {
> - const gchar *result;
> + gchar *result;
> gchar *sim_identifier;
>
> - if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res), error))
> + result = g_task_propagate_pointer (G_TASK (res), error);
> + if (!result)
> return NULL;
> - result = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (res));
>
> sim_identifier = parse_iccid (result, error);
> + g_free (result);
> if (!sim_identifier)
> return NULL;
>
> @@ -997,10 +995,7 @@ load_sim_identifier (MMBaseSim *self,
> 20,
> FALSE,
> (GAsyncReadyCallback)load_sim_identifier_command_ready,
> - g_simple_async_result_new (G_OBJECT (self),
> - callback,
> - user_data,
> - load_sim_identifier));
> + g_task_new (self, NULL, callback, user_data));
> }
>
> /*****************************************************************************/
> @@ -1036,14 +1031,15 @@ load_imsi_finish (MMBaseSim *self,
> GAsyncResult *res,
> GError **error)
> {
> - const gchar *result;
> + gchar *result;
> gchar *imsi;
>
> - if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res), error))
> + result = g_task_propagate_pointer (G_TASK (res), error);
> + if (!result)
> return NULL;
> - result = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (res));
>
> imsi = parse_imsi (result, error);
> + g_free (result);
> if (!imsi)
> return NULL;
>
> @@ -1066,10 +1062,7 @@ load_imsi (MMBaseSim *self,
> 3,
> FALSE,
> (GAsyncReadyCallback)load_imsi_command_ready,
> - g_simple_async_result_new (G_OBJECT (self),
> - callback,
> - user_data,
> - load_imsi));
> + g_task_new (self, NULL, callback, user_data));
> }
>
> /*****************************************************************************/
> @@ -1145,12 +1138,19 @@ load_operator_identifier_finish (MMBaseSim *self,
> {
> GError *inner_error = NULL;
> const gchar *imsi;
> - const gchar *result;
> + gchar *result;
> guint mnc_length;
>
> - if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res), error))
> + result = g_task_propagate_pointer (G_TASK (res), error);
> + if (!result)
> return NULL;
> - result = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (res));
> +
> + mnc_length = parse_mnc_length (result, &inner_error);
> + g_free (result);
> + if (inner_error) {
> + g_propagate_error (error, inner_error);
> + return NULL;
> + }
>
> imsi = mm_gdbus_sim_get_imsi (MM_GDBUS_SIM (self));
> if (!imsi) {
> @@ -1161,12 +1161,6 @@ load_operator_identifier_finish (MMBaseSim *self,
> return NULL;
> }
>
> - mnc_length = parse_mnc_length (result, &inner_error);
> - if (inner_error) {
> - g_propagate_error (error, inner_error);
> - return NULL;
> - }
> -
> /* Build Operator ID */
> return g_strndup (imsi, 3 + mnc_length);
> }
> @@ -1187,10 +1181,7 @@ load_operator_identifier (MMBaseSim *self,
> 10,
> FALSE,
> (GAsyncReadyCallback)load_operator_identifier_command_ready,
> - g_simple_async_result_new (G_OBJECT (self),
> - callback,
> - user_data,
> - load_operator_identifier));
> + g_task_new (self, NULL, callback, user_data));
> }
>
> /*****************************************************************************/
> @@ -1257,13 +1248,16 @@ load_operator_name_finish (MMBaseSim *self,
> GAsyncResult *res,
> GError **error)
> {
> - const gchar *result;
> + gchar *result;
> + gchar *spn;
>
> - if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res), error))
> + result = g_task_propagate_pointer (G_TASK (res), error);
> + if (!result)
> return NULL;
> - result = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (res));
>
> - return parse_spn (result, error);
> + spn = parse_spn (result, error);
> + g_free (result);
> + return spn;
> }
>
> STR_REPLY_READY_FN (load_operator_name)
> @@ -1282,10 +1276,7 @@ load_operator_name (MMBaseSim *self,
> 10,
> FALSE,
> (GAsyncReadyCallback)load_operator_name_command_ready,
> - g_simple_async_result_new (G_OBJECT (self),
> - callback,
> - user_data,
> - load_operator_name));
> + g_task_new (self, NULL, callback, user_data));
> }
>
> /*****************************************************************************/
>
--
Aleksander
https://aleksander.es
More information about the ModemManager-devel
mailing list