diff options
author | Alexander Larsson <alexl@src.gnome.org> | 2007-09-13 11:03:09 +0000 |
---|---|---|
committer | Alexander Larsson <alexl@src.gnome.org> | 2007-09-13 11:03:09 +0000 |
commit | f043c47e0efb3c443f040d5238d657ea6a0ed26b (patch) | |
tree | 8618fbd14ab34bea70dc4a2606be0fdaa604101a /daemon/gvfsjobenumerate.c | |
parent | 44fce9a8d15caf9c660ccc30eb8046727a54152c (diff) | |
download | gvfs-f043c47e0efb3c443f040d5238d657ea6a0ed26b.tar.gz |
New thread model for GVfsDaemon
Original git commit by Alexander Larsson <alex@greebo.(none)> at 1169224526 +0100
svn path=/trunk/; revision=259
Diffstat (limited to 'daemon/gvfsjobenumerate.c')
-rw-r--r-- | daemon/gvfsjobenumerate.c | 38 |
1 files changed, 29 insertions, 9 deletions
diff --git a/daemon/gvfsjobenumerate.c b/daemon/gvfsjobenumerate.c index 453920b9..327971e7 100644 --- a/daemon/gvfsjobenumerate.c +++ b/daemon/gvfsjobenumerate.c @@ -14,7 +14,8 @@ G_DEFINE_TYPE (GVfsJobEnumerate, g_vfs_job_enumerate, G_TYPE_VFS_JOB_DBUS); -static gboolean start (GVfsJob *job); +static void run (GVfsJob *job); +static gboolean try (GVfsJob *job); static void send_reply (GVfsJob *job); static DBusMessage *create_reply (GVfsJob *job, DBusConnection *connection, @@ -43,7 +44,8 @@ g_vfs_job_enumerate_class_init (GVfsJobEnumerateClass *klass) GVfsJobDBusClass *job_dbus_class = G_VFS_JOB_DBUS_CLASS (klass); gobject_class->finalize = g_vfs_job_enumerate_finalize; - job_class->start = start; + job_class->run = run; + job_class->try = try; job_class->send_reply = send_reply; job_dbus_class->create_reply = create_reply; } @@ -175,17 +177,35 @@ g_vfs_job_enumerate_done (GVfsJobEnumerate *job) g_vfs_job_emit_finished (G_VFS_JOB (job)); } +static void +run (GVfsJob *job) +{ + GVfsJobEnumerate *op_job = G_VFS_JOB_ENUMERATE (job); + GVfsBackendClass *class = G_VFS_BACKEND_GET_CLASS (op_job->backend); + + class->enumerate (op_job->backend, + op_job, + op_job->filename, + op_job->requested, + op_job->attributes, + op_job->follow_symlinks); +} + static gboolean -start (GVfsJob *job) +try (GVfsJob *job) { GVfsJobEnumerate *op_job = G_VFS_JOB_ENUMERATE (job); + GVfsBackendClass *class = G_VFS_BACKEND_GET_CLASS (op_job->backend); + + if (class->try_enumerate == NULL) + return FALSE; - return g_vfs_backend_enumerate (op_job->backend, - op_job, - op_job->filename, - op_job->requested, - op_job->attributes, - op_job->follow_symlinks); + return class->try_enumerate (op_job->backend, + op_job, + op_job->filename, + op_job->requested, + op_job->attributes, + op_job->follow_symlinks); } static void |