#ifndef CACHE_H #define CACHE_H #include #include /** * \file cache.h * \brief cache related structures and functions * \details * Metadata: * - We store the metadata and the actual data separately in two * different folders. * - The metadata file should follow the following format: * - file length (long) * - CURLINFO_FILETIME * - segment count (int) * - individual segments (array of seg) * * \note * - We are using 'long' to store file size, because the offset in fseek() is * in long, because the way we use the cache system, you cannot seek past * long. So the biggest file size has to be able to be stored in long. This * makes this program architecturally dependent, but this is due to the * dependency to fseek(). */ /** * \brief a cache segment */ typedef struct { long start; long end; } Seg; /** * \brief cache in-memory data structure * \note fanf2@cam.ac.uk told me to use an array rather than linked list! */ typedef struct { char *filename; /**< the filename from the http server */ long len; /**