diff options
author | Alexander Larsson <alexl@redhat.com> | 2009-02-27 12:59:47 +0000 |
---|---|---|
committer | Alexander Larsson <alexl@src.gnome.org> | 2009-02-27 12:59:47 +0000 |
commit | 28713ed6b20cb617bce93e639b764617a118e1dd (patch) | |
tree | 8e840db7df291d1c60a55eb0aba9364ae89bde73 /daemon/gvfschannel.c | |
parent | 4c1cbdac8d59b1bf53319bc9e5a165c8b11adacb (diff) | |
download | gvfs-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.c | 21 |
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) { |