[sysprof/wip/chergert/sysprof-3] libsysprof: add async variant for proc source
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [sysprof/wip/chergert/sysprof-3] libsysprof: add async variant for proc source
- Date: Sat, 11 May 2019 03:41:38 +0000 (UTC)
commit d9cade5c6db3e76160404befe58b87c8aed1ddaf
Author: Christian Hergert <chergert redhat com>
Date: Fri May 10 20:41:28 2019 -0700
libsysprof: add async variant for proc source
src/libsysprof/sysprof-helpers.c | 63 ++++++++++++++++++++++++++++++++++++++++
src/libsysprof/sysprof-helpers.h | 9 ++++++
2 files changed, 72 insertions(+)
---
diff --git a/src/libsysprof/sysprof-helpers.c b/src/libsysprof/sysprof-helpers.c
index e82c13f..f02c63e 100644
--- a/src/libsysprof/sysprof-helpers.c
+++ b/src/libsysprof/sysprof-helpers.c
@@ -566,3 +566,66 @@ sysprof_helpers_get_process_info (SysprofHelpers *self,
return ipc_service_call_get_process_info_sync (self->proxy, attributes, info, cancellable, error);
}
+
+static void
+sysprof_helpers_get_process_info_cb (IpcService *service,
+ GAsyncResult *result,
+ gpointer user_data)
+{
+ g_autoptr(GTask) task = user_data;
+ g_autoptr(GVariant) info = NULL;
+ g_autoptr(GError) error = NULL;
+
+ g_assert (IPC_IS_SERVICE (service));
+ g_assert (G_IS_ASYNC_RESULT (result));
+ g_assert (G_IS_TASK (task));
+
+ if (!ipc_service_call_get_process_info_finish (service, &info, result, &error))
+ g_task_return_error (task, g_steal_pointer (&error));
+ else
+ g_task_return_pointer (task, g_steal_pointer (&info), (GDestroyNotify)g_variant_unref);
+}
+
+void
+sysprof_helpers_get_process_info_async (SysprofHelpers *self,
+ const gchar *attributes,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_autoptr(GTask) task = NULL;
+
+ g_assert (SYSPROF_IS_HELPERS (self));
+ g_assert (attributes != NULL);
+ g_assert (!cancellable || G_IS_CANCELLABLE (cancellable));
+
+ task = g_task_new (self, cancellable, callback, user_data);
+ g_task_set_source_tag (task, sysprof_helpers_get_process_info_async);
+
+ ipc_service_call_get_process_info (self->proxy,
+ attributes,
+ cancellable,
+ (GAsyncReadyCallback) sysprof_helpers_get_process_info_cb,
+ g_steal_pointer (&task));
+}
+
+gboolean
+sysprof_helpers_get_process_info_finish (SysprofHelpers *self,
+ GAsyncResult *result,
+ GVariant **info,
+ GError **error)
+{
+ g_autoptr(GVariant) ret = NULL;
+
+ g_assert (SYSPROF_IS_HELPERS (self));
+ g_assert (G_IS_TASK (result));
+
+ if ((ret = g_task_propagate_pointer (G_TASK (result), error)))
+ {
+ if (info)
+ *info = g_steal_pointer (&ret);
+ return TRUE;
+ }
+
+ return FALSE;
+}
diff --git a/src/libsysprof/sysprof-helpers.h b/src/libsysprof/sysprof-helpers.h
index 1469c2d..517ba49 100644
--- a/src/libsysprof/sysprof-helpers.h
+++ b/src/libsysprof/sysprof-helpers.h
@@ -73,6 +73,15 @@ gboolean sysprof_helpers_get_process_info (SysprofHelpers
GCancellable *cancellable,
GVariant **info,
GError **error);
+void sysprof_helpers_get_process_info_async (SysprofHelpers *self,
+ const gchar *attributes,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+gboolean sysprof_helpers_get_process_info_finish(SysprofHelpers *self,
+ GAsyncResult *result,
+ GVariant **info,
+ GError **error);
#ifdef __linux__
gboolean sysprof_helpers_perf_event_open (SysprofHelpers *self,
struct perf_event_attr *attr,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]