summaryrefslogtreecommitdiff
path: root/daemon/gvfsbackendafp.c
diff options
context:
space:
mode:
authorCarl-Anton Ingmarsson <ca.ingmarsson@gmail.com>2011-08-09 17:04:51 +0200
committerChristian Kellner <gicmo@gnome.org>2011-08-25 21:19:55 +0200
commit3a41dcabf49287438953bb4e3622cd493adfc395 (patch)
treeb7be88d5ca6bfbf780e7a552e05ecd3cb5e79067 /daemon/gvfsbackendafp.c
parent6fb8847eded26016eedd94f55608d56ab7796365 (diff)
downloadgvfs-3a41dcabf49287438953bb4e3622cd493adfc395.tar.gz
afp: read directly into the given read buffer
this way we can skip an memcpy and gain some extra performance
Diffstat (limited to 'daemon/gvfsbackendafp.c')
-rw-r--r--daemon/gvfsbackendafp.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/daemon/gvfsbackendafp.c b/daemon/gvfsbackendafp.c
index ae2ad3f8..de814626 100644
--- a/daemon/gvfsbackendafp.c
+++ b/daemon/gvfsbackendafp.c
@@ -2047,7 +2047,6 @@ read_ext_cb (GObject *source_object, GAsyncResult *res, gpointer user_data)
GError *err = NULL;
AfpResultCode res_code;
gsize size;
- char *data;
reply = g_vfs_afp_connection_send_command_finish (afp_conn, res, &err);
if (!reply)
@@ -2080,10 +2079,6 @@ read_ext_cb (GObject *source_object, GAsyncResult *res, gpointer user_data)
size = g_vfs_afp_reply_get_size (reply);
- /* TODO: Read directly into the data buffer */
- g_vfs_afp_reply_get_data (reply, size, (guint8 **)&data);
- memcpy (job->buffer, data, size);
-
afp_handle->offset += size;
g_vfs_job_read_set_size (job, size);
@@ -2117,6 +2112,9 @@ try_read (GVfsBackend *backend,
req_count = MIN (bytes_requested, G_MAXUINT32);
g_vfs_afp_command_put_int64 (comm, req_count);
+ /* Set buffer to read into */
+ g_vfs_afp_command_set_buffer (comm, buffer, bytes_requested);
+
g_vfs_afp_connection_send_command (afp_backend->server->conn, comm,
read_ext_cb, G_VFS_JOB (job)->cancellable,
job);