00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef LUMIERA_FILEHANDLECACHE_H
00022 #define LUMIERA_FILEHANDLECACHE_H
00023
00024 #include "lib/error.h"
00025 #include "lib/mrucache.h"
00026 #include "lib/mutex.h"
00027
00028 typedef struct lumiera_filehandlecache_struct lumiera_filehandlecache;
00029 typedef lumiera_filehandlecache* LumieraFilehandlecache;
00030
00031 #include "backend/filehandle.h"
00032
00043
00044
00045
00046 struct lumiera_filehandlecache_struct
00047 {
00048 lumiera_mrucache cache;
00049 int available;
00050 int checked_out;
00051 lumiera_mutex lock;
00052 };
00053
00054 extern LumieraFilehandlecache lumiera_fhcache;
00055
00062 void
00063 lumiera_filehandlecache_new (int max_entries);
00064
00070 void
00071 lumiera_filehandlecache_delete (void);
00072
00078 LumieraFilehandle
00079 lumiera_filehandlecache_handle_acquire (LumieraFilehandlecache self, LumieraFiledescriptor desc);
00080
00087 LumieraFilehandle
00088 lumiera_filehandlecache_checkout (LumieraFilehandlecache self, LumieraFilehandle handle);
00089
00096 void
00097 lumiera_filehandlecache_checkin (LumieraFilehandlecache self, LumieraFilehandle handle);
00098
00099 #endif