summaryrefslogtreecommitdiff
path: root/daemon/gvfschannel.c
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2009-02-27 12:59:47 +0000
committerAlexander Larsson <alexl@src.gnome.org>2009-02-27 12:59:47 +0000
commit28713ed6b20cb617bce93e639b764617a118e1dd (patch)
tree8e840db7df291d1c60a55eb0aba9364ae89bde73 /daemon/gvfschannel.c
parent4c1cbdac8d59b1bf53319bc9e5a165c8b11adacb (diff)
downloadgvfs-28713ed6b20cb617bce93e639b764617a118e1dd.tar.gz
Add (de)marshalling functions for GFileInfos.
2009-02-27 Alexander Larsson <alexl@redhat.com> * common/Makefile.am: * common/gvfsfileinfo.[ch]: Add (de)marshalling functions for GFileInfos. * common/gvfsdaemonprotocol.h: Add protocol extensions for query info over streams * client/gdaemonfileinputstream.c: Support sync query_info. * daemon/Makefile.am: * daemon/gvfsjobqueryinforead.[ch]: * daemon/gvfsbackend.h: Added query info job and backend call for input streams * daemon/gvfsbackendtest.c: Implement query_info_on_read * daemon/gvfschannel.[ch]: Add g_vfs_channel_send_info * daemon/gvfsreadchannel.c: (read_channel_handle_request): Handle query info * test/Makefile.am: * test/test-query-info-stream.c: Add test for stream query info. svn path=/trunk/; revision=2257
Diffstat (limited to 'daemon/gvfschannel.c')
-rw-r--r--daemon/gvfschannel.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/daemon/gvfschannel.c b/daemon/gvfschannel.c
index 01c40e67..4647bcbb 100644
--- a/daemon/gvfschannel.c
+++ b/daemon/gvfschannel.c
@@ -40,6 +40,7 @@
#include <gvfsdaemonutils.h>
#include <gvfsjobcloseread.h>
#include <gvfsjobclosewrite.h>
+#include <gvfsfileinfo.h>
static void g_vfs_channel_job_source_iface_init (GVfsJobSourceIface *iface);
@@ -669,6 +670,26 @@ g_vfs_channel_send_error (GVfsChannel *channel,
g_vfs_channel_send_reply (channel, NULL, data, data_len);
}
+/* Might be called on an i/o thread
+ */
+void
+g_vfs_channel_send_info (GVfsChannel *channel,
+ GFileInfo *info)
+{
+ GVfsDaemonSocketProtocolReply reply;
+ char *data;
+ gsize data_len;
+
+ data = gvfs_file_info_marshal (info, &data_len);
+
+ reply.type = g_htonl (G_VFS_DAEMON_SOCKET_PROTOCOL_REPLY_INFO);
+ reply.seq_nr = g_htonl (g_vfs_channel_get_current_seq_nr (channel));
+ reply.arg1 = 0;
+ reply.arg2 = g_htonl (data_len);
+
+ g_vfs_channel_send_reply (channel, &reply, data, data_len);
+}
+
int
g_vfs_channel_steal_remote_fd (GVfsChannel *channel)
{