## camel-uid-cache camel-uid-cache |

## Synopsis

                        CamelUIDCache;
    CamelUIDCache *     camel_uid_cache_new                 (const gchar *filename);
    gboolean            camel_uid_cache_save                (CamelUIDCache *cache);
    void                camel_uid_cache_destroy             (CamelUIDCache *cache);
    GPtrArray *         camel_uid_cache_get_new_uids        (CamelUIDCache *cache,
                                                             GPtrArray *uids);
    void                camel_uid_cache_save_uid            (CamelUIDCache *cache,
                                                             const gchar *uid);
    void                camel_uid_cache_free_uids           (GPtrArray *uids);

## Description

## Details

### CamelUIDCache

    typedef struct {
    	gchar *filename;
    	GHashTable *uids;
    	guint level;
    	gsize expired;
    	gsize size;
    	gint fd;
    } CamelUIDCache;

### camel_uid_cache_new ()

    CamelUIDCache *     camel_uid_cache_new                 (const gchar *filename);

Creates a new UID cache, initialized from `filename`. If `filename` doesn't already exist, the UID cache will be empty. Otherwise, if it does exist but can't be read, the function will return `NULL`.

`filename` : | path to load the cache from
Returns : | a new UID cache, or `NULL`

### camel_uid_cache_save ()

    gboolean            camel_uid_cache_save                (CamelUIDCache *cache);

Attempts to save `cache` back to disk.

`cache` : | a CamelUIDCache
Returns : | success or failure

### camel_uid_cache_destroy ()

    void                camel_uid_cache_destroy             (CamelUIDCache *cache);

Destroys `cache` and frees its data.

`cache` : | a CamelUIDCache

### camel_uid_cache_get_new_uids ()

    GPtrArray *         camel_uid_cache_get_new_uids        (CamelUIDCache *cache,
                                                             GPtrArray *uids);

Returns an array of UIDs from `uids` that are not in `cache`, and removes UIDs from `cache` that aren't in `uids`.

`cache` : | a CamelUIDCache
`uids` : | an array of UIDs
Returns : | an array of new UIDs, which must be freed with `camel_uid_cache_free_uids()`.

### camel_uid_cache_save_uid ()

    void                camel_uid_cache_save_uid            (CamelUIDCache *cache,
                                                             const gchar *uid);

Marks a uid for saving.

`cache` : | a CamelUIDCache
`uid` : | a uid to save

### camel_uid_cache_free_uids ()

    void                camel_uid_cache_free_uids           (GPtrArray *uids);

Frees the array of UIDs.

`uids` : | an array returned from `camel_uid_cache_get_new_uids()`