diff options
author | Benjamin Otte <otte@gnome.org> | 2009-06-04 18:41:35 +0200 |
---|---|---|
committer | Benjamin Otte <otte@gnome.org> | 2009-06-11 10:05:40 +0200 |
commit | 5bca61ba06c374b5d4ef197e4805074880ddee20 (patch) | |
tree | e4469dcf08bbb7fbb4ab2d6960277db8bd0ebce4 /daemon/gvfsftpdircache.h | |
parent | 5e3ce10bd814834731ac70e584a90b64ab2860fe (diff) | |
download | gvfs-5bca61ba06c374b5d4ef197e4805074880ddee20.tar.gz |
[FTP] rework cache handling
The cache handling has been split into a separate file and structure
now. While the API still isn't perfect, it's much clearer than before.
It's also faster when looking up lots of symlinks.
Diffstat (limited to 'daemon/gvfsftpdircache.h')
-rw-r--r-- | daemon/gvfsftpdircache.h | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/daemon/gvfsftpdircache.h b/daemon/gvfsftpdircache.h new file mode 100644 index 00000000..5a1237a8 --- /dev/null +++ b/daemon/gvfsftpdircache.h @@ -0,0 +1,76 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2009 Benjamin Otte <otte@gnome.org> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place, Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Benjamin Otte <otte@gnome.org> + */ + +#ifndef __G_VFS_FTP_DIRCACHE_H__ +#define __G_VFS_FTP_DIRCACHE_H__ + +#include <gvfsftpfile.h> +#include <gvfsftptask.h> + +G_BEGIN_DECLS + + +//typedef struct _GVfsFtpDirCache GVfsFtpDirCache; +typedef struct _GVfsFtpDirCacheEntry GVfsFtpDirCacheEntry; +//typedef struct _GVfsFtpDirFuncs GVfsFtpDirFuncs; + +struct _GVfsFtpDirFuncs { + const char * command; + gboolean (* process) (GInputStream * stream, + const GVfsFtpFile * dir, + GVfsFtpDirCacheEntry * entry, + GCancellable * cancellable, + GError ** error); + GVfsFtpFile * (* resolve_symlink) (GVfsFtpTask * task, + const GVfsFtpFile * file, + const char * target); +}; + +extern const GVfsFtpDirFuncs g_vfs_ftp_dir_cache_funcs_unix; +extern const GVfsFtpDirFuncs g_vfs_ftp_dir_cache_funcs_default; + +GVfsFtpDirCache * g_vfs_ftp_dir_cache_new (const GVfsFtpDirFuncs *funcs, + GFileInfo * root); +void g_vfs_ftp_dir_cache_free (GVfsFtpDirCache * cache); + +GFileInfo * g_vfs_ftp_dir_cache_lookup_file (GVfsFtpDirCache * cache, + GVfsFtpTask * task, + const GVfsFtpFile * file, + gboolean resolve_symlinks); +GList * g_vfs_ftp_dir_cache_lookup_dir (GVfsFtpDirCache * cache, + GVfsFtpTask * task, + const GVfsFtpFile * dir, + gboolean flush, + gboolean resolve_symlinks); +void g_vfs_ftp_dir_cache_purge_file (GVfsFtpDirCache * cache, + const GVfsFtpFile * file); +void g_vfs_ftp_dir_cache_purge_dir (GVfsFtpDirCache * cache, + const GVfsFtpFile * dir); + +void g_vfs_ftp_dir_cache_entry_add (GVfsFtpDirCacheEntry * entry, + GVfsFtpFile * file, + GFileInfo * info); + + +G_END_DECLS + +#endif /* __G_VFS_FTP_DIRCACHE_H__ */ |