summaryrefslogtreecommitdiff
path: root/daemon/gvfsbackendtest.c
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@src.gnome.org>2007-09-13 10:34:09 +0000
committerAlexander Larsson <alexl@src.gnome.org>2007-09-13 10:34:09 +0000
commit824891203199e3dd493846c94374020f422422db (patch)
tree1b13408d07d9f5ec38896e1ec2e71bc41e89a9a4 /daemon/gvfsbackendtest.c
parent5d528aa6ebe7d9a4b0b669e9654729654ee209db (diff)
downloadgvfs-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.c24
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;
}
}