diff options
author | Alexander Larsson <alexl@src.gnome.org> | 2007-09-13 10:34:09 +0000 |
---|---|---|
committer | Alexander Larsson <alexl@src.gnome.org> | 2007-09-13 10:34:09 +0000 |
commit | 824891203199e3dd493846c94374020f422422db (patch) | |
tree | 1b13408d07d9f5ec38896e1ec2e71bc41e89a9a4 /daemon/gvfsbackendtest.c | |
parent | 5d528aa6ebe7d9a4b0b669e9654729654ee209db (diff) | |
download | gvfs-824891203199e3dd493846c94374020f422422db.tar.gz |
Rename GVfsReadStream to GVfsReadChannel
Make GVfsJobDBus class to share code
Make GVfsJob backend be construct property
Implement daemon-side support for dbus call cancellation
Finish dbus call cancellation client-side
Original git commit by Alexander Larsson <alex@greebo.(none)> at 1165257484 +0100
svn path=/trunk/; revision=217
Diffstat (limited to 'daemon/gvfsbackendtest.c')
-rw-r--r-- | daemon/gvfsbackendtest.c | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/daemon/gvfsbackendtest.c b/daemon/gvfsbackendtest.c index 92b6ffc6..3ce5a6c9 100644 --- a/daemon/gvfsbackendtest.c +++ b/daemon/gvfsbackendtest.c @@ -50,6 +50,14 @@ open_idle_cb (gpointer data) GVfsJobOpenForRead *job = data; int fd; + if (g_vfs_job_is_cancelled (G_VFS_JOB (job))) + { + g_vfs_job_failed (G_VFS_JOB (job), G_VFS_ERROR, + G_VFS_ERROR_CANCELLED, + _("Operation was cancelled")); + return FALSE; + } + fd = g_open (job->filename, O_RDONLY); if (fd == -1) { @@ -67,6 +75,19 @@ open_idle_cb (gpointer data) return FALSE; } +static void +open_read_cancelled_cb (GVfsJob *job, gpointer data) +{ + guint tag = GPOINTER_TO_INT (data); + + g_print ("open_read_cancelled_cb\n"); + + if (g_source_remove (tag)) + g_vfs_job_failed (job, G_VFS_ERROR, + G_VFS_ERROR_CANCELLED, + _("Operation was cancelled")); +} + static gboolean do_open_for_read (GVfsBackend *backend, GVfsJobOpenForRead *job, @@ -84,7 +105,8 @@ do_open_for_read (GVfsBackend *backend, } else { - g_idle_add (open_idle_cb, job); + guint tag = g_timeout_add (0, open_idle_cb, job); + g_signal_connect (job, "cancelled", (GCallback)open_read_cancelled_cb, GINT_TO_POINTER (tag)); return TRUE; } } |