/* Directory caching code for Netdrive plugins. Copyright (C) netlabs.org 2010-2016 */ #ifndef __DIRCACHE_H__ #define __DIRCACHE_H__ #ifdef __cplusplus extern "C" { #endif #include #define NDPL_LARGEFILES #define INCL_LONGLONG #include /* callback for fsphAddFile32L */ typedef void FNADDDIRENTRY(void *plist, void *finfo); typedef FNADDDIRENTRY *PFNADDDIRENTRY; /* callback for releasing memory */ typedef void FNFREEDIRENTRY(void *finfo); typedef FNFREEDIRENTRY *PFNFREEDIRENTRY; /* forward declarations */ typedef struct DirectoryCache DirectoryCache; /* Directory cache helpers. */ int dircache_create(DirectoryCache **ppdc, void* pRes, int cachetimeout, int cachedepth, PFNFREEDIRENTRY fn, PLUGINHELPERTABLE2L *ph); void dircache_delete(DirectoryCache *pdc); /* directory cache scanning */ int dircache_list_files(DirectoryCache *pdc, PFNADDDIRENTRY fn, void *plist, char* dir_mask, char* fullpath, int *ptotal_received); int dircache_find_path(DirectoryCache *pdc, const char *path, void **finfo, unsigned long *pulAge); /* directory cache creation */ void *dircache_write_begin(DirectoryCache *pdc, char* dir_mask, char* fullpath, int cFiles); void dircache_write_entry(DirectoryCache *pdc, void *dircachectx, const char *fname, const void *finfo); void dircache_write_end(DirectoryCache *pdc, void *dircachectx); /* directory cache invalidation */ void dircache_invalidate(DirectoryCache *pdc, const char *path, int fParent); #ifdef __cplusplus } #endif #endif // __DIRCACHE_H__