![]() |
libgpac
Documentation of the core library of GPAC
|
#include <gpac/cache.h>
#include <gpac/network.h>
#include <gpac/download.h>
#include <gpac/token.h>
#include <gpac/thread.h>
#include <gpac/list.h>
#include <gpac/base_coding.h>
#include <gpac/tools.h>
#include <gpac/config_file.h>
#include <stdio.h>
#include <string.h>
Data Structures | |
struct | GF_CacheReader |
struct | DownloadedRange |
struct | DownloadedCacheEntry |
Macros | |
#define | CHECK_ENTRY if (!entry) { GF_LOG(GF_LOG_WARNING, GF_LOG_CACHE, ("[CACHE] entry is null at " __FILE__ ":%d\n", __LINE__)); return GF_BAD_PARAM; } |
#define | _CACHE_TMP_SIZE 4096 |
#define | _CACHE_HASH_SIZE 20 |
#define | _CACHE_MAX_EXTENSION_SIZE 6 |
Enumerations | |
enum | CacheValid { MUST_REVALIDATE = 1 , IS_HTTPS = 1<<1 , CORRUPTED = 1<<2 , NO_CACHE = 1<<3 , DELETED = 1<<4 } |
Functions | |
Bool | gf_cache_entry_persistent (const DownloadedCacheEntry entry) |
void | gf_cache_entry_set_persistent (const DownloadedCacheEntry entry) |
Bool | delete_cache_files (void *cbck, char *item_name, char *item_path, GF_FileEnumInfo *file_info) |
Bool | gather_cache_size (void *cbck, char *item_name, char *item_path, GF_FileEnumInfo *file_info) |
u64 | gf_cache_get_size (const char *directory) |
GF_Err | gf_cache_delete_all_cached_files (const char *directory) |
void | gf_cache_entry_set_delete_files_when_deleted (const DownloadedCacheEntry entry) |
Bool | gf_cache_entry_is_delete_files_when_deleted (const DownloadedCacheEntry entry) |
const char * | gf_cache_get_etag_on_server (const DownloadedCacheEntry entry) |
const char * | gf_cache_get_mime_type (const DownloadedCacheEntry entry) |
GF_Err | gf_cache_set_headers_processed (const DownloadedCacheEntry entry) |
Bool | gf_cache_are_headers_processed (const DownloadedCacheEntry entry) |
GF_Err | gf_cache_set_etag_on_server (const DownloadedCacheEntry entry, const char *eTag) |
GF_Err | gf_cache_set_etag_on_disk (const DownloadedCacheEntry entry, const char *eTag) |
GF_Err | gf_cache_set_mime_type (const DownloadedCacheEntry entry, const char *mime_type) |
u64 | gf_cache_get_start_range (const DownloadedCacheEntry entry) |
u64 | gf_cache_get_end_range (const DownloadedCacheEntry entry) |
const char * | gf_cache_get_url (const DownloadedCacheEntry entry) |
const char * | gf_cache_get_last_modified_on_server (const DownloadedCacheEntry entry) |
GF_Err | gf_cache_set_last_modified_on_server (const DownloadedCacheEntry entry, const char *newLastModified) |
GF_Err | gf_cache_set_last_modified_on_disk (const DownloadedCacheEntry entry, const char *newLastModified) |
GF_Err | gf_cache_flush_disk_cache (const DownloadedCacheEntry entry) |
u32 | gf_cache_get_cache_filesize (const DownloadedCacheEntry entry) |
const char * | gf_cache_get_cache_filename (const DownloadedCacheEntry entry) |
GF_Err | gf_cache_get_http_headers (const DownloadedCacheEntry entry, const char **etag, const char **last_modif) |
DownloadedCacheEntry | gf_cache_create_entry (GF_DownloadManager *dm, const char *cache_directory, const char *url, u64 start_range, u64 end_range, Bool mem_storage, GF_Mutex *mx) |
GF_Err | gf_cache_set_content_length (const DownloadedCacheEntry entry, u32 length) |
u32 | gf_cache_get_content_length (const DownloadedCacheEntry entry) |
GF_Err | gf_cache_close_write_cache (const DownloadedCacheEntry entry, const GF_DownloadSession *sess, Bool success) |
Close the write file pointer of cache This function also flushes all buffers, so cache will always be consistent after. | |
GF_Err | gf_cache_open_write_cache (const DownloadedCacheEntry entry, const GF_DownloadSession *sess) |
Open the write file pointer of cache This function prepares calls for gf_cache_write_to_cache. | |
GF_Err | gf_cache_write_to_cache (const DownloadedCacheEntry entry, const GF_DownloadSession *sess, const char *data, const u32 size, GF_Mutex *mx) |
GF_Err | gf_cache_delete_entry (const DownloadedCacheEntry entry) |
Bool | gf_cache_check_if_cache_file_is_corrupted (const DownloadedCacheEntry entry) |
s32 | gf_cache_remove_session_from_cache_entry (DownloadedCacheEntry entry, GF_DownloadSession *sess) |
u32 | gf_cache_get_sessions_count_for_cache_entry (const DownloadedCacheEntry entry) |
s32 | gf_cache_add_session_to_cache_entry (DownloadedCacheEntry entry, GF_DownloadSession *sess) |
void | gf_cache_set_end_range (DownloadedCacheEntry entry, u64 range_end) |
Bool | gf_cache_is_in_progress (const DownloadedCacheEntry entry) |
Bool | gf_cache_set_mime (const DownloadedCacheEntry entry, const char *mime) |
Bool | gf_cache_set_range (const DownloadedCacheEntry entry, u64 size, u64 start_range, u64 end_range) |
Bool | gf_cache_set_headers (const DownloadedCacheEntry entry, const char *headers) |
char * | gf_cache_get_forced_headers (const DownloadedCacheEntry entry) |
void | gf_cache_set_downtime (const DownloadedCacheEntry entry, u32 download_time_ms) |
u32 | gf_cache_get_downtime (const DownloadedCacheEntry entry) |
Bool | gf_cache_is_done (const DownloadedCacheEntry entry) |
const u8 * | gf_cache_get_content (const DownloadedCacheEntry entry, u32 *size) |
void | gf_cache_release_content (const DownloadedCacheEntry entry) |
Bool | gf_cache_is_deleted (const DownloadedCacheEntry entry) |
Bool | gf_cache_set_content (const DownloadedCacheEntry entry, GF_Blob *blob, Bool copy, GF_Mutex *mx) |
Variables | |
static const char * | CACHE_SECTION_NAME = "cache" |
static const char * | CACHE_SECTION_NAME_URL = "url" |
static const char * | CACHE_SECTION_NAME_RANGE = "range" |
static const char * | CACHE_SECTION_NAME_ETAG = "ETag" |
static const char * | CACHE_SECTION_NAME_MIME_TYPE = "Content-Type" |
static const char * | CACHE_SECTION_NAME_CONTENT_SIZE = "Content-Length" |
static const char * | CACHE_SECTION_NAME_LAST_MODIFIED = "Last-Modified" |
static const char * | cache_file_prefix = "gpac_cache_" |
static const char * | default_cache_file_suffix = ".dat" |
static const char * | cache_file_info_suffix = ".txt" |
struct __CacheReaderStruct |
cache object
Data Fields | ||
---|---|---|
FILE * | readPtr | |
s64 | readPosition |
struct __DownloadedCacheEntryStruct |
This opaque structure handles the data from the cache
Handle for Cache Entries. You can use the gf_cache_get_* functions to get the cache properties
Data Fields | ||
---|---|---|
char * | url |
URL of the cache (never NULL) |
char * | hash |
Hash of the cache (never NULL) |
char * | cache_filename |
Name of the cache filename, (can be NULL) |
GF_Config * | properties |
Name of the cached properties filename , (can be NULL) |
u32 | contentLength |
Theorical size of cache if any |
u32 | cacheSize |
Real size of cache |
u32 | validity |
GMT timestamp for revalidation |
char * | serverLastModified |
The last modification time on the server |
char * | diskLastModified |
The last modification time of the cache if any |
char * | serverETag |
ETag if any |
char * | diskETag |
ETag if any |
char * | mimeType |
Mime-type (never NULL) |
FILE * | writeFilePtr |
Write pointer for the cache |
u32 | written_in_cache |
Bytes written during this cache session |
enum CacheValid | flags |
Flag indicating whether we have to revalidate |
const GF_DownloadSession * | write_session | |
GF_List * | sessions | |
Bool | deletableFilesOnDelete | |
GF_DownloadManager * | dm | |
u64 | range_start | |
u64 | range_end | |
Bool | continue_file | |
Bool | file_exists | |
u32 | previousRangeContentLength | |
Bool | headers_done | |
Bool | memory_stored |
Set to 1 if file is not stored on disk |
u32 | mem_allocated | |
u8 * | mem_storage | |
char * | forced_headers | |
u32 | downtime | |
GF_Blob | cache_blob | |
GF_Blob * | external_blob | |
Bool | persistent |
#define CHECK_ENTRY if (!entry) { GF_LOG(GF_LOG_WARNING, GF_LOG_CACHE, ("[CACHE] entry is null at " __FILE__ ":%d\n", __LINE__)); return GF_BAD_PARAM; } |
#define _CACHE_TMP_SIZE 4096 |
#define _CACHE_HASH_SIZE 20 |
#define _CACHE_MAX_EXTENSION_SIZE 6 |
enum CacheValid |
Bool gf_cache_entry_persistent | ( | const DownloadedCacheEntry | entry | ) |
void gf_cache_entry_set_persistent | ( | const DownloadedCacheEntry | entry | ) |
Bool delete_cache_files | ( | void * | cbck, |
char * | item_name, | ||
char * | item_path, | ||
GF_FileEnumInfo * | file_info | ||
) |
Bool gather_cache_size | ( | void * | cbck, |
char * | item_name, | ||
char * | item_path, | ||
GF_FileEnumInfo * | file_info | ||
) |
DownloadedCacheEntry gf_cache_create_entry | ( | GF_DownloadManager * | dm, |
const char * | cache_directory, | ||
const char * | url, | ||
u64 | start_range, | ||
u64 | end_range, | ||
Bool | mem_storage, | ||
GF_Mutex * | mx | ||
) |
Creates a new cache entry
GF_Err gf_cache_close_write_cache | ( | const DownloadedCacheEntry | entry, |
const GF_DownloadSession * | sess, | ||
Bool | success | ||
) |
Close the write file pointer of cache This function also flushes all buffers, so cache will always be consistent after.
entry | The entry to use |
sess | The download session |
success | 1 if cache write is success, false otherwise |
GF_Err gf_cache_open_write_cache | ( | const DownloadedCacheEntry | entry, |
const GF_DownloadSession * | sess | ||
) |
Open the write file pointer of cache This function prepares calls for gf_cache_write_to_cache.
entry | The entry to use |
sess | The download session |
GF_Err gf_cache_write_to_cache | ( | const DownloadedCacheEntry | entry, |
const GF_DownloadSession * | sess, | ||
const char * | data, | ||
const u32 | size, | ||
GF_Mutex * | mx | ||
) |
s32 gf_cache_remove_session_from_cache_entry | ( | DownloadedCacheEntry | entry, |
GF_DownloadSession * | sess | ||
) |
Removes a session for a DownloadedCacheEntry
entry | The entry |
sess | The session to remove |
s32 gf_cache_add_session_to_cache_entry | ( | DownloadedCacheEntry | entry, |
GF_DownloadSession * | sess | ||
) |
Adds a session to a DownloadedCacheEntry. implemented in cache.c
entry | The entry |
sess | The session to add |
void gf_cache_set_end_range | ( | DownloadedCacheEntry | entry, |
u64 | range_end | ||
) |
Bool gf_cache_is_in_progress | ( | const DownloadedCacheEntry | entry | ) |
Bool gf_cache_set_mime | ( | const DownloadedCacheEntry | entry, |
const char * | mime | ||
) |
Bool gf_cache_set_range | ( | const DownloadedCacheEntry | entry, |
u64 | size, | ||
u64 | start_range, | ||
u64 | end_range | ||
) |
Bool gf_cache_set_headers | ( | const DownloadedCacheEntry | entry, |
const char * | headers | ||
) |
char * gf_cache_get_forced_headers | ( | const DownloadedCacheEntry | entry | ) |
void gf_cache_set_downtime | ( | const DownloadedCacheEntry | entry, |
u32 | download_time_ms | ||
) |
u32 gf_cache_get_downtime | ( | const DownloadedCacheEntry | entry | ) |
Bool gf_cache_is_done | ( | const DownloadedCacheEntry | entry | ) |
void gf_cache_release_content | ( | const DownloadedCacheEntry | entry | ) |
Bool gf_cache_is_deleted | ( | const DownloadedCacheEntry | entry | ) |
Bool gf_cache_set_content | ( | const DownloadedCacheEntry | entry, |
GF_Blob * | blob, | ||
Bool | copy, | ||
GF_Mutex * | mx | ||
) |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |