aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2017-09-04 17:34:29 +0200
committerAleksander Morgado <aleksander@aleksander.es>2017-09-04 17:59:59 +0200
commit52aa393d4085d493eb88f146e8d44dfafd937758 (patch)
treecdc7dde57e57940659e8b33f97984f2d27dd791c /src
parent530ebf90635ea2f652d68934f8d7c0656abc9e05 (diff)
base-sim: wrap in its own GTask the SIM id loading from the subclass
Instead of reusing the caller GTask, use a new GTask to wrap the execution of the subclass' async method implementation. Also, rename the _ready() methods implemented in the GObject initialization flow so that we can use the load_sim_identifier_ready() function name.
Diffstat (limited to 'src')
-rw-r--r--src/mm-base-sim.c71
1 files changed, 34 insertions, 37 deletions
diff --git a/src/mm-base-sim.c b/src/mm-base-sim.c
index 24d5b1c1..72ad2bb0 100644
--- a/src/mm-base-sim.c
+++ b/src/mm-base-sim.c
@@ -708,24 +708,23 @@ mm_base_sim_load_sim_identifier_finish (MMBaseSim *self,
GAsyncResult *res,
GError **error)
{
- GError *inner_error = NULL;
- gchar *simid;
-
- if (g_async_result_is_tagged (res, mm_base_sim_load_sim_identifier) ||
- !MM_BASE_SIM_GET_CLASS (self)->load_sim_identifier_finish) {
- inner_error = g_error_new (MM_CORE_ERROR, MM_CORE_ERROR_UNSUPPORTED,
- "not implemented");
- g_propagate_error (error, inner_error);
- return NULL;
- }
+ return g_task_propagate_pointer (G_TASK (res), error);
+}
- simid = MM_BASE_SIM_GET_CLASS (self)->load_sim_identifier_finish (self, res, &inner_error);
- if (inner_error) {
- g_propagate_error (error, inner_error);
- return NULL;
- }
+static void
+load_sim_identifier_ready (MMBaseSim *self,
+ GAsyncResult *res,
+ GTask *task)
+{
+ gchar *simid;
+ GError *error = NULL;
- return simid;
+ simid = MM_BASE_SIM_GET_CLASS (self)->load_sim_identifier_finish (self, res, &error);
+ if (!simid)
+ g_task_return_error (task, error);
+ else
+ g_task_return_pointer (task, simid, g_free);
+ g_object_unref (task);
}
void
@@ -733,24 +732,22 @@ mm_base_sim_load_sim_identifier (MMBaseSim *self,
GAsyncReadyCallback callback,
gpointer user_data)
{
- if (!MM_BASE_SIM_GET_CLASS (self)->load_sim_identifier &&
+ GTask *task;
+
+ task = g_task_new (self, NULL, callback, user_data);
+
+ if (!MM_BASE_SIM_GET_CLASS (self)->load_sim_identifier ||
!MM_BASE_SIM_GET_CLASS (self)->load_sim_identifier_finish) {
- g_task_report_new_error (self,
- callback,
- user_data,
- mm_base_sim_load_sim_identifier,
- MM_CORE_ERROR,
- MM_CORE_ERROR_UNSUPPORTED,
+ g_task_return_new_error (task, MM_CORE_ERROR, MM_CORE_ERROR_UNSUPPORTED,
"not implemented");
+ g_object_unref (task);
return;
}
MM_BASE_SIM_GET_CLASS (self)->load_sim_identifier (
self,
- (GAsyncReadyCallback)callback,
- user_data);
-
- return;
+ (GAsyncReadyCallback)load_sim_identifier_ready,
+ task);
}
/*****************************************************************************/
@@ -1381,9 +1378,9 @@ initable_init_finish (GAsyncInitable *initable,
}
static void
-load_sim_identifier_ready (MMBaseSim *self,
- GAsyncResult *res,
- GTask *task)
+init_load_sim_identifier_ready (MMBaseSim *self,
+ GAsyncResult *res,
+ GTask *task)
{
InitAsyncContext *ctx;
GError *error = NULL;
@@ -1420,9 +1417,9 @@ load_sim_identifier_ready (MMBaseSim *self,
#undef STR_REPLY_READY_FN
#define STR_REPLY_READY_FN(NAME,DISPLAY) \
static void \
- load_##NAME##_ready (MMBaseSim *self, \
- GAsyncResult *res, \
- GTask *task) \
+ init_load_##NAME##_ready (MMBaseSim *self, \
+ GAsyncResult *res, \
+ GTask *task) \
{ \
InitAsyncContext *ctx; \
GError *error = NULL; \
@@ -1475,7 +1472,7 @@ interface_initialization_step (GTask *task)
MM_BASE_SIM_GET_CLASS (self)->load_sim_identifier_finish) {
MM_BASE_SIM_GET_CLASS (self)->load_sim_identifier (
self,
- (GAsyncReadyCallback)load_sim_identifier_ready,
+ (GAsyncReadyCallback)init_load_sim_identifier_ready,
task);
return;
}
@@ -1491,7 +1488,7 @@ interface_initialization_step (GTask *task)
MM_BASE_SIM_GET_CLASS (self)->load_imsi_finish) {
MM_BASE_SIM_GET_CLASS (self)->load_imsi (
self,
- (GAsyncReadyCallback)load_imsi_ready,
+ (GAsyncReadyCallback)init_load_imsi_ready,
task);
return;
}
@@ -1507,7 +1504,7 @@ interface_initialization_step (GTask *task)
MM_BASE_SIM_GET_CLASS (self)->load_operator_identifier_finish) {
MM_BASE_SIM_GET_CLASS (self)->load_operator_identifier (
self,
- (GAsyncReadyCallback)load_operator_identifier_ready,
+ (GAsyncReadyCallback)init_load_operator_identifier_ready,
task);
return;
}
@@ -1523,7 +1520,7 @@ interface_initialization_step (GTask *task)
MM_BASE_SIM_GET_CLASS (self)->load_operator_name_finish) {
MM_BASE_SIM_GET_CLASS (self)->load_operator_name (
self,
- (GAsyncReadyCallback)load_operator_name_ready,
+ (GAsyncReadyCallback)init_load_operator_name_ready,
task);
return;
}