summaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2008-01-11 09:17:28 +0000
committerAlexander Larsson <alexl@src.gnome.org>2008-01-11 09:17:28 +0000
commit64e052d5b43bcb033187e46aaafea4f867e10a75 (patch)
treea9dd2fb52294968fe65b7c4f918895a0d220631c /client
parented7cfa1b785fd70da0945518878197d61897e6b1 (diff)
downloadgvfs-64e052d5b43bcb033187e46aaafea4f867e10a75.tar.gz
Implement unmount_mountable and eject_mountable on client side.
2008-01-11 Alexander Larsson <alexl@redhat.com> * client/gdaemonfile.c: * common/gvfsdaemonprotocol.h: Implement unmount_mountable and eject_mountable on client side. * common/gmountoperationdbus.c: Fix warnings * daemon/gvfsbackend.[ch]: * daemon/gvfsjobunmountmountable.[ch]: Add unmount_mountable and eject_mountable in daemon. * daemon/gvfsbackendcomputer.c: Implement unmount_mountable and eject_mountable * daemon/gvfsbackendlocaltest.c: Update to latest API * daemon/gvfsbackendsftp.c: Fix indentation * daemon/gvfsjobunmount.c: Always allow unmount if unmount is not implemented. svn path=/trunk/; revision=1093
Diffstat (limited to 'client')
-rw-r--r--client/gdaemonfile.c88
1 files changed, 86 insertions, 2 deletions
diff --git a/client/gdaemonfile.c b/client/gdaemonfile.c
index ebf24b92..4db2b43c 100644
--- a/client/gdaemonfile.c
+++ b/client/gdaemonfile.c
@@ -821,19 +821,22 @@ query_info_async_cb (DBusMessage *reply,
static void
g_daemon_file_query_info_async (GFile *file,
const char *attributes,
- GFileQueryInfoFlags flags,
+ GFileQueryInfoFlags flags,
int io_priority,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data)
{
+ guint32 dbus_flags;
+
+ dbus_flags = flags;
do_async_path_call (file,
G_VFS_DBUS_MOUNT_OP_QUERY_INFO,
cancellable,
callback, user_data,
query_info_async_cb, NULL, NULL,
DBUS_TYPE_STRING, &attributes,
- DBUS_TYPE_UINT32, &flags,
+ DBUS_TYPE_UINT32, &dbus_flags,
0);
}
@@ -1300,6 +1303,83 @@ g_daemon_file_mount_mountable_finish (GFile *file,
return NULL;
}
+static void
+eject_mountable_async_cb (DBusMessage *reply,
+ DBusConnection *connection,
+ GSimpleAsyncResult *result,
+ GCancellable *cancellable,
+ gpointer callback_data)
+{
+ g_simple_async_result_complete (result);
+}
+
+static void
+g_daemon_file_eject_mountable (GFile *file,
+ GMountUnmountFlags flags,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ guint32 dbus_flags;
+
+ dbus_flags = flags;
+ do_async_path_call (file,
+ G_VFS_DBUS_MOUNT_OP_EJECT_MOUNTABLE,
+ cancellable,
+ callback, user_data,
+ eject_mountable_async_cb,
+ NULL, NULL,
+ DBUS_TYPE_UINT32, &dbus_flags,
+ 0);
+}
+
+static gboolean
+g_daemon_file_eject_mountable_finish (GFile *file,
+ GAsyncResult *result,
+ GError **error)
+{
+ return TRUE;
+}
+
+static void
+unmount_mountable_async_cb (DBusMessage *reply,
+ DBusConnection *connection,
+ GSimpleAsyncResult *result,
+ GCancellable *cancellable,
+ gpointer callback_data)
+{
+ g_simple_async_result_complete (result);
+}
+
+static void
+g_daemon_file_unmount_mountable (GFile *file,
+ GMountUnmountFlags flags,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ guint32 dbus_flags;
+
+ dbus_flags = flags;
+ do_async_path_call (file,
+ G_VFS_DBUS_MOUNT_OP_UNMOUNT_MOUNTABLE,
+ cancellable,
+ callback, user_data,
+ eject_mountable_async_cb,
+ NULL, NULL,
+ DBUS_TYPE_UINT32, &dbus_flags,
+ 0);
+}
+
+static gboolean
+g_daemon_file_unmount_mountable_finish (GFile *file,
+ GAsyncResult *result,
+ GError **error)
+{
+ return TRUE;
+}
+
+
typedef struct {
GFile *file;
GMountOperation *mount_operation;
@@ -1986,6 +2066,10 @@ g_daemon_file_file_iface_init (GFileIface *iface)
iface->mount_enclosing_volume_finish = g_daemon_file_mount_enclosing_volume_finish;
iface->mount_mountable = g_daemon_file_mount_mountable;
iface->mount_mountable_finish = g_daemon_file_mount_mountable_finish;
+ iface->unmount_mountable = g_daemon_file_unmount_mountable;
+ iface->unmount_mountable_finish = g_daemon_file_unmount_mountable_finish;
+ iface->eject_mountable = g_daemon_file_eject_mountable;
+ iface->eject_mountable_finish = g_daemon_file_eject_mountable_finish;
iface->query_filesystem_info = g_daemon_file_query_filesystem_info;
iface->set_display_name = g_daemon_file_set_display_name;
iface->delete_file = g_daemon_file_delete;