mirror of
https://github.com/varun-r-mallya/sysprof.git
synced 2026-02-12 16:10:54 +00:00
libsysprof: add sync get_proc variant and fallbacks
This commit is contained in:
@ -224,9 +224,47 @@ sysprof_helpers_get_proc_file_cb (IpcService *service,
|
|||||||
g_assert (G_IS_TASK (task));
|
g_assert (G_IS_TASK (task));
|
||||||
|
|
||||||
if (!ipc_service_call_get_proc_file_finish (service, &contents, result, &error))
|
if (!ipc_service_call_get_proc_file_finish (service, &contents, result, &error))
|
||||||
g_task_return_error (task, g_steal_pointer (&error));
|
{
|
||||||
else
|
const gchar *path = g_task_get_task_data (task);
|
||||||
g_task_return_pointer (task, g_steal_pointer (&contents), g_free);
|
gsize len;
|
||||||
|
|
||||||
|
if (!helpers_get_proc_file (path, &contents, &len))
|
||||||
|
{
|
||||||
|
g_task_return_error (task, g_steal_pointer (&error));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
g_clear_error (&error);
|
||||||
|
}
|
||||||
|
|
||||||
|
g_task_return_pointer (task, g_steal_pointer (&contents), g_free);
|
||||||
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
sysprof_helpers_get_proc_file (SysprofHelpers *self,
|
||||||
|
const gchar *path,
|
||||||
|
GCancellable *cancellable,
|
||||||
|
gchar **contents,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
gsize len;
|
||||||
|
|
||||||
|
g_return_val_if_fail (SYSPROF_IS_HELPERS (self), FALSE);
|
||||||
|
g_return_val_if_fail (!cancellable || G_IS_CANCELLABLE (cancellable), FALSE);
|
||||||
|
|
||||||
|
if (self->proxy != NULL)
|
||||||
|
{
|
||||||
|
if (ipc_service_call_get_proc_file_sync (self->proxy, path, contents, cancellable, error))
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!helpers_get_proc_file (path, contents, &len))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (error != NULL)
|
||||||
|
g_clear_error (error);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -243,6 +281,7 @@ sysprof_helpers_get_proc_file_async (SysprofHelpers *self,
|
|||||||
|
|
||||||
task = g_task_new (self, cancellable, callback, user_data);
|
task = g_task_new (self, cancellable, callback, user_data);
|
||||||
g_task_set_source_tag (task, sysprof_helpers_list_processes_async);
|
g_task_set_source_tag (task, sysprof_helpers_list_processes_async);
|
||||||
|
g_task_set_task_data (task, g_strdup (path), g_free);
|
||||||
|
|
||||||
if (!fail_if_no_proxy (self, task))
|
if (!fail_if_no_proxy (self, task))
|
||||||
ipc_service_call_get_proc_file (self->proxy,
|
ipc_service_call_get_proc_file (self->proxy,
|
||||||
|
|||||||
@ -42,6 +42,11 @@ gboolean sysprof_helpers_list_processes_finish (SysprofHelpers
|
|||||||
gint32 **processes,
|
gint32 **processes,
|
||||||
gsize *n_processes,
|
gsize *n_processes,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
gboolean sysprof_helpers_get_proc_file (SysprofHelpers *self,
|
||||||
|
const gchar *path,
|
||||||
|
GCancellable *cancellable,
|
||||||
|
gchar **contents,
|
||||||
|
GError **error);
|
||||||
void sysprof_helpers_get_proc_file_async (SysprofHelpers *self,
|
void sysprof_helpers_get_proc_file_async (SysprofHelpers *self,
|
||||||
const gchar *path,
|
const gchar *path,
|
||||||
GCancellable *cancellable,
|
GCancellable *cancellable,
|
||||||
|
|||||||
Reference in New Issue
Block a user