diff options
author | Christian Kellner <gicmo@gnome.org> | 2011-05-25 15:27:33 +0200 |
---|---|---|
committer | Christian Kellner <gicmo@gnome.org> | 2011-06-06 14:40:45 +0200 |
commit | 66bbe38a1329616e6313b6bd41b98e1b77d1306d (patch) | |
tree | 6b03ab22f3466cb7e5b9530ba2cecf6b091847b2 /daemon/gvfsbackend.c | |
parent | 08c4a19fc74d0ff9175203157229fed5d04fba07 (diff) | |
download | gvfs-66bbe38a1329616e6313b6bd41b98e1b77d1306d.tar.gz |
daemon: New logic to the backend to block requests
When the backend is set to block requests it will answer all
incoming requets with G_IO_ERROR_NOT_MOUNTED. This will later
be used by the unmount code to bridge the time while we are
unregistering the mount but have not finished doing so.
Diffstat (limited to 'daemon/gvfsbackend.c')
-rw-r--r-- | daemon/gvfsbackend.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/daemon/gvfsbackend.c b/daemon/gvfsbackend.c index ee321084..1c2fb8a6 100644 --- a/daemon/gvfsbackend.c +++ b/daemon/gvfsbackend.c @@ -80,6 +80,7 @@ struct _GVfsBackendPrivate gboolean user_visible; char *default_location; GMountSpec *mount_spec; + gboolean block_requests; }; @@ -509,6 +510,12 @@ g_vfs_backend_add_auto_info (GVfsBackend *backend, } +void +g_vfs_backend_set_block_requests (GVfsBackend *backend) +{ + backend->priv->block_requests = TRUE; +} + static DBusHandlerResult backend_dbus_handler (DBusConnection *connection, DBusMessage *message, @@ -522,6 +529,21 @@ backend_dbus_handler (DBusConnection *connection, g_debug ("backend_dbus_handler %s:%s\n", dbus_message_get_interface (message), dbus_message_get_member (message)); + + if (backend->priv->block_requests) + { + DBusMessage *reply; + + reply = _dbus_message_new_gerror (message, + G_IO_ERROR, + G_IO_ERROR_NOT_MOUNTED, + "%s", "Backend currently unmounting"); + + g_assert (reply != NULL); + + dbus_connection_send (connection, reply, NULL); + return DBUS_HANDLER_RESULT_HANDLED; + } if (dbus_message_is_method_call (message, G_VFS_DBUS_MOUNT_INTERFACE, |