[PATCH 6/6] base-sim: port mm_base_sim_send_{pin,puk} to use GTask
Aleksander Morgado
aleksander at aleksander.es
Wed Jul 5 08:52:03 UTC 2017
On 04/07/17 20:40, Ben Chan wrote:
> ---
> src/mm-base-sim.c | 107 +++++++++++++++++++++++++++---------------------------
> 1 file changed, 54 insertions(+), 53 deletions(-)
>
Pushed to git master, thanks.
> diff --git a/src/mm-base-sim.c b/src/mm-base-sim.c
> index ebfbc35a..f3525e02 100644
> --- a/src/mm-base-sim.c
> +++ b/src/mm-base-sim.c
> @@ -493,19 +493,13 @@ send_pin (MMBaseSim *self,
> /* SEND PIN/PUK (common logic) */
>
> typedef struct {
> - MMBaseSim *self;
> - GSimpleAsyncResult *result;
> GError *save_error;
> } SendPinPukContext;
>
> static void
> -send_pin_puk_context_complete_and_free (SendPinPukContext *ctx)
> +send_pin_puk_context_free (SendPinPukContext *ctx)
> {
> - if (ctx->save_error)
> - g_error_free (ctx->save_error);
> - g_simple_async_result_complete (ctx->result);
> - g_object_unref (ctx->result);
> - g_object_unref (ctx->self);
> + g_clear_error (&ctx->save_error);
> g_free (ctx);
> }
>
> @@ -546,7 +540,7 @@ mm_base_sim_send_pin_finish (MMBaseSim *self,
> GAsyncResult *res,
> GError **error)
> {
> - return !g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res), error);
> + return g_task_propagate_boolean (G_TASK (res), error);
> }
>
> gboolean
> @@ -554,17 +548,20 @@ mm_base_sim_send_puk_finish (MMBaseSim *self,
> GAsyncResult *res,
> GError **error)
> {
> - return !g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res), error);
> + return g_task_propagate_boolean (G_TASK (res), error);
> }
>
> static void
> update_lock_info_ready (MMIfaceModem *modem,
> GAsyncResult *res,
> - SendPinPukContext *ctx)
> + GTask *task)
> {
> + SendPinPukContext *ctx;
> GError *error = NULL;
> MMModemLock lock;
>
> + ctx = g_task_get_task_data (task);
> +
> lock = mm_iface_modem_update_lock_info_finish (modem, res, &error);
> /* Even if we may be SIM-PIN2/PUK2 locked, we don't consider this an error
> * in the PIN/PUK sending */
> @@ -577,29 +574,29 @@ update_lock_info_ready (MMIfaceModem *modem,
> * - Otherwise, build our own error from the lock code.
> */
> if (ctx->save_error) {
> - g_simple_async_result_take_error (ctx->result, ctx->save_error);
> - ctx->save_error = NULL;
> g_clear_error (&error);
> - } else if (error)
> - g_simple_async_result_take_error (ctx->result, error);
> - else
> - g_simple_async_result_take_error (ctx->result,
> - error_for_unlock_check (lock));
> - send_pin_puk_context_complete_and_free (ctx);
> - return;
> - }
> + error = ctx->save_error;
> + ctx->save_error = NULL;
> + } else if (!error)
> + error = error_for_unlock_check (lock);
> +
> + g_task_return_error (task, error);
> + } else
> + g_task_return_boolean (task, TRUE);
>
> - g_simple_async_result_set_op_res_gboolean (ctx->result, TRUE);
> - send_pin_puk_context_complete_and_free (ctx);
> + g_object_unref (task);
> }
>
> static void
> send_pin_ready (MMBaseSim *self,
> GAsyncResult *res,
> - SendPinPukContext *ctx)
> + GTask *task)
> {
> + SendPinPukContext *ctx;
> MMModemLock known_lock = MM_MODEM_LOCK_UNKNOWN;
>
> + ctx = g_task_get_task_data (task);
> +
> if (!MM_BASE_SIM_GET_CLASS (self)->send_pin_finish (self, res, &ctx->save_error)) {
> if (g_error_matches (ctx->save_error,
> MM_MOBILE_EQUIPMENT_ERROR,
> @@ -612,21 +609,25 @@ send_pin_ready (MMBaseSim *self,
> MM_IFACE_MODEM (self->priv->modem),
> known_lock,
> (GAsyncReadyCallback)update_lock_info_ready,
> - ctx);
> + task);
> }
>
> static void
> send_puk_ready (MMBaseSim *self,
> GAsyncResult *res,
> - SendPinPukContext *ctx)
> + GTask *task)
> {
> + SendPinPukContext *ctx;
> +
> + ctx = g_task_get_task_data (task);
> +
> MM_BASE_SIM_GET_CLASS (self)->send_puk_finish (self, res, &ctx->save_error);
>
> /* Once pin/puk has been sent, recheck lock */
> mm_iface_modem_update_lock_info (MM_IFACE_MODEM (self->priv->modem),
> MM_MODEM_LOCK_UNKNOWN, /* ask */
> (GAsyncReadyCallback)update_lock_info_ready,
> - ctx);
> + task);
> }
>
> void
> @@ -636,31 +637,31 @@ mm_base_sim_send_pin (MMBaseSim *self,
> gpointer user_data)
> {
> SendPinPukContext *ctx;
> + GTask *task;
>
> /* If sending PIN is not implemented, report an error */
> if (!MM_BASE_SIM_GET_CLASS (self)->send_pin ||
> !MM_BASE_SIM_GET_CLASS (self)->send_pin_finish) {
> - g_simple_async_report_error_in_idle (G_OBJECT (self),
> - callback,
> - user_data,
> - MM_CORE_ERROR,
> - MM_CORE_ERROR_UNSUPPORTED,
> - "Cannot send PIN: "
> - "operation not supported");
> + g_task_report_new_error (self,
> + callback,
> + user_data,
> + mm_base_sim_send_pin,
> + MM_CORE_ERROR,
> + MM_CORE_ERROR_UNSUPPORTED,
> + "Cannot send PIN: "
> + "operation not supported");
> return;
> }
>
> ctx = g_new0 (SendPinPukContext, 1);
> - ctx->self = g_object_ref (self);
> - ctx->result = g_simple_async_result_new (G_OBJECT (self),
> - callback,
> - user_data,
> - mm_base_sim_send_pin);
> +
> + task = g_task_new (self, NULL, callback, user_data);
> + g_task_set_task_data (task, ctx, (GDestroyNotify)send_pin_puk_context_free);
>
> MM_BASE_SIM_GET_CLASS (self)->send_pin (self,
> pin,
> (GAsyncReadyCallback)send_pin_ready,
> - ctx);
> + task);
> }
>
> void
> @@ -671,32 +672,32 @@ mm_base_sim_send_puk (MMBaseSim *self,
> gpointer user_data)
> {
> SendPinPukContext *ctx;
> + GTask *task;
>
> /* If sending PIN is not implemented, report an error */
> if (!MM_BASE_SIM_GET_CLASS (self)->send_puk ||
> !MM_BASE_SIM_GET_CLASS (self)->send_puk_finish) {
> - g_simple_async_report_error_in_idle (G_OBJECT (self),
> - callback,
> - user_data,
> - MM_CORE_ERROR,
> - MM_CORE_ERROR_UNSUPPORTED,
> - "Cannot send PUK: "
> - "operation not supported");
> + g_task_report_new_error (self,
> + callback,
> + user_data,
> + mm_base_sim_send_puk,
> + MM_CORE_ERROR,
> + MM_CORE_ERROR_UNSUPPORTED,
> + "Cannot send PUK: "
> + "operation not supported");
> return;
> }
>
> ctx = g_new0 (SendPinPukContext, 1);
> - ctx->self = g_object_ref (self);
> - ctx->result = g_simple_async_result_new (G_OBJECT (self),
> - callback,
> - user_data,
> - mm_base_sim_send_puk);
> +
> + task = g_task_new (self, NULL, callback, user_data);
> + g_task_set_task_data (task, ctx, (GDestroyNotify)send_pin_puk_context_free);
>
> MM_BASE_SIM_GET_CLASS (self)->send_puk (self,
> puk,
> new_pin,
> (GAsyncReadyCallback)send_puk_ready,
> - ctx);
> + task);
> }
>
> /*****************************************************************************/
>
--
Aleksander
https://aleksander.es
More information about the ModemManager-devel
mailing list